---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-8-dae596e5f0ad> in <module>()
5 s = {2, "a", True, (3, 4)}
6 print(s)
----> 7 s1 = {{1, 3}, {4, 6}} # TypeError: unhashable type: 'set'
8 print(s1)
9 print(s) # {1, 'a', (3, 4)}
TypeError: unhashable type: 'set'
'''定义一个空集合'''
s = set()
print(type(s))
s1 = {}
print(type(s1))
<class 'set'>
<class 'dict'>
'''集合中只要一个元素的情况,必须加逗号'''
s = {1,}
print(type(s))
<class 'set'>
'''集合中包括True和1的情况,哪个在前,保留哪个'''
s = {1, True}
print(s) # {1}
s1 = {True, 1}
print(s1) # {True}
{1}
{True}
'''集合中包括False和0的情况,哪个在前,保留哪个'''
s = {0, False}
print(s) # {0}
s = {False, 0}
print(s) # {False}
{0}
{False}
'''add给集合添加元素'''
s = {1, "a"}
s.add("b")
print(s) # {1, 'b', 'a'}
{1, 'b', 'a'}
'''discard删除集合中的元素'''
s = {1, "a", False}
s.discard("a")
print(s) # {False, 1}
{False, 1}
'''update批量添加集合元素'''
s = {1, "a"}
s2 = {"b", False, (1, 2)}
s3 = s.update(s2)
print(s) # {False, 1, 'b', (1, 2), 'a'}
{False, 1, 'b', (1, 2), 'a'
'''
使用这个特性,我们可以使用set来去掉重复
'''
lst = ["apple", "banana", "orange", "banana", "banana"]
lst = list(set(lst))
print(lst) # ['apple', 'banana', 'orange']
['orange', 'apple', 'banana']
'''集合取并集、交集、差集和对称差集
intersection 交集
union 并集
difference 差集
symmetric_difference 对称差集
& 交集
| 并集
- 差集
'''
# &或者intersection取交集
s = {"a", "b", "c"}
s2 = {"b", "c", "d"}
print(s & s2)
print(s.intersection(s2))
{'b', 'c'}
{'b', 'c'}
# |或者union取并集
s = {"a", "b", "c"}
s2 = {"b", "c", "d"}
print(s | s2)
print(s.union(s2))
{'b', 'd', 'c', 'a'}
{'b', 'd', 'c', 'a'}
# -或者difference取差集
s = {"a", "b", "c"}
s2 = {"b", "c", "d"}
print(s - s2)
print(s.difference(s2))
print(s2 - s)
print(s2.difference(s))
{'a'}
{'a'}
{'d'}
{'d'}
# symmetric_difference取对称差集
s = {"a", "b", "c"}
s2 = {"b", "c", "d"}
print(s.symmetric_difference(s2))
{'d', 'a'}