集合set
集合 无序的 不重复元素
常用来去除重复的元素
创建集合
>>> a=set()
>>> type(a)
<class 'set'>
>>> a={1,2,3}
>>> type(a)
<class 'set'>
in 和 not in
in 和 not in 是成员运算符,对于列表,元组,字典,集合,判断一个数据是否在这些容器类型数据中,都可以使用成员运算符
my_set = {'python', 32, 983.9, 'python', 'php'}
print('php' in my_set)
添加元素
a.add(6)
>>> a
{1, 2, 3, 6}
a.update((9,8,6))
>>> a
{1, 2, 3, 6, 8, 9}
删除元素
remove(元素),元素不在会报错
Discard(元素),元素不在不会报错
Pop(不给参数)随机移除元素
Del 集合名 删除集合
a.remove(5)
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
a.remove(5)
KeyError: 5
>>> a.remove(2)
>>> a
{1, 3, 6, 8, 9}
>>> a.discard(5)
>>> a
{1, 3, 6, 8, 9}
>>> b={9,5,4,6,'pp'}
>>> b.pop()
4
>>> b.pop()
5
>>> b.pop()
6
>>> b.pop()
'pp'
方法
1. add()
add方法向集合中添加元素,即便该元素已经存在于集合中也能向里添加
my_set = set()
my_set.add(1)
my_set.add(1)
my_set.add(2)
print(my_set) # {1, 2}
2. clear()
clear方法清空集合
my_set = set()
my_set.add(1)
my_set.add(2)
print(my_set) # {1, 2}
my_set.clear()
print(my_set) # set() 空集合
3. copy()
拷贝一个集合
my_set = set()
my_set.add(1)
my_set.add(2)
print(my_set) # {1, 2}
my_set_2 = my_set.copy()
print(my_set_2) # {1, 2}
4. difference()
返回集合的差集
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1.difference(s2)) # {1}
print(s2.difference(s1)) # {4}
5. difference_update()
在原集合上移除两个集合都存在的元素,方法没有返回值,下面示例中,s1里的元素被改变了
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1.difference_update(s2)
print(s1) # {1}
6. discard()
删除集合中的指定元素
s1 = {1, 2, 3}
s1.discard(1)
print(s1) # {2, 3}
7. intersection()
返回集合的交集,集合可以是多个
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {3, 4, 5}
print(s1.intersection(s2)) # {2, 3}
print(s1.intersection(s2, s3)) # {3}
8. intersection_update()
在原集合上移除与其他集合不重复的元素,其实就是在求交集,intersection也是计算交集,但不改变参与计算的集合内容,而intersection_update会改变原集合的内容。
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {3, 4, 5}
s1.intersection_update(s2)
print(s1) # {2, 3}
9. isdisjoint()
判断交集是否为空
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1.isdisjoint(s2))
10. issubset()
判断指定集合是否为该方法参数集合的子集。
s1 = {1, 2, 3}
s2 = {1, 2, 3, 4}
print(s1.issubset(s2)) # 判断s1是s2的子集
11. issuperset()
也是判断是否为自己,只是与issubset判断方向相反
s1 = {1, 2, 3}
s2 = {1, 2, 3, 4}
print(s2.issuperset(s1)) # 判断s1是s2的子集
12. pop()
随机的移除一个元素,但在实践中,又与该说法相矛盾
s1 = {8, 1, 2, 3, 4, 5, 6, 7}
s1.pop()
print(s1)
上述代码,每次执行都是删除1
13. remove()
移除指定元素
s1 = {8, 1, 2, 3, 4, 5, 6, 7}
s1.remove(4)
print(s1)
14. symmetric_difference()
返回两个集合中不重复的元素集合
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1.symmetric_difference(s2)) # {1, 4}
15. symmetric_difference_update()
移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1.symmetric_difference_update(s2)
print(s1)
s1最终的结果等于s1.symmetric_difference(s2)的返回值
16. union()
返回两个集合的并集
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1.union(s2)) # {1, 2, 3, 4}
17. update()
将另一个集合更新到原集合中,给集合添加元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1.update(s2)
print(s1) # {1, 2, 3, 4}