集合是包含一组
唯一值的容器。和列表不一样,集合中的元素不以任何特定的顺序存储,不能通过位置进行访问。集合对象可用的操作和数学中集合的操作是一样的。
创建集合
创建集合有{}和set()两种方法,其中创建空集合不能用{},只能用set(),因为{}已被用于创建空字典。集合中的元素只能为数字、字符串、布尔值、元组,不能为列表、集合和字典。
{}方法
- {value1,value2,…,valuen}:创建集合,value1、value2、…是互不相同的。
set1 = {1,2,3,"a","b"}
print(set1)
set2 = {1,2,3.0,"Abc","B",True,False,(1,2,3)}
print(set2)
set()方法
- set():创建空集合。
- set(iterable):从可迭代对象创建集合。可通过set()方法去除可迭代对象中的重复元素。
import numpy as np
set0 = set()
print(set0)
data1 = [1,2,3,4,5,3,4,5]
set1 = set(data1)
print(set1)
data2 = np.arange(6)
set2 = set(data2)
print(set2)
map_object = map(str,[1,2,3,4,5])
set3 = set(map_object)
print(set3)
集合中的常用方法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b75c16ae997ccd8fe933adb5223462d2.png)
集合运算
方法 | 说明 |
---|
len (s) | 求集合的元素个数。 |
s1.intersection (*s) | 求s1与多个集合的交集。 |
s1.union (*s) | 求s1与多个集合的并集。 |
s1.difference (*s) | 求s1与多个集合的差集。 |
s1.symmetric_difference (*s) | 求s1与多个集合的对称差异,即:求两集合的非交集构成的并集。 |
s0 = {1,2,3.0,"Abc","B",True,False,(1,2,3)}
print(len(s0))
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
new_set = s1.intersection(s2)
print(new_set)
s4 = {1,2,3}
s5 = {2,3,4,5}
s6 = {4,5,6,7}
new_set = s4.union(s5,s6)
print(new_set)
s7 = {1,2,3,4,5,6,7}
s8 = {5,6,7,8,9}
new_set = s7.difference(s8)
print(new_set)
s9 = {1,2,3,4,5}
s10 = {3,4,5,6,7,8}
new_set = s9.symmetric_difference(s10)
print(new_set)
判断
方法 | 说明 |
---|
s1.issubset (s2) | 判断s1是否是s2的子集,是则返回True;否则,返回False。 |
s1.isdisjoint (s2) | 判断s1和s2是否没有交集,没有则返回True;否则,返回False。 |
s1 = {1,2,3}
s2 = {1,2,3,4,5,6}
flag1 = s1.issubset(s2)
print(flag1)
s3 = {1,2,3}
s4 = {4,5,6}
flag2 = s3.isdisjoint(s4)
print(flag2)
更新
方法 | 说明 |
---|
s1.add (element) | 向集合中添加一个元素。如果原集合已存在该元素,则原集合不改变。 |
s1.intersection_update (*s) | 用s1与多个集合的交集来更新s1。 |
s1.update (*s) | 用s1与多个集合的并集来更新s1。 |
s1.difference_update (*s) | 用s1与多个集合的差集来更新s1。 |
s1.symmetric_difference_update (*s) | 用s1与多个集合的比较差异集合来更新s1。 |
s1 = {1,2,3}
s1.add(4)
print(s1)
s2 = {1,2,3,4,5,6}
s3 = {4,5,6,7,8}
s2.intersection_update(s3)
print(s2)
s4 = {1,2,3}
s5 = {3,4,5,6}
s4.update(s5)
print(s4)
s6 = {1,2,3,4,5,6,7}
s7 = {2,3,4}
s6.difference_update(s7)
print(s6)
s8 = {1,2,3,4,5,6}
s9 = {3,4,5,6,7,8,9}
s8.symmetric_difference_update(s9)
print(s8)
删除
方法 | 说明 |
---|
del | Python内置函数,删除对象。 |
s.clear () | 清空集合,原集合变为空集合。 |
s.pop () | 删除集合任意一个元素,并将该元素返回。 |
s.discard (element) | 删除集合的一个元素,如果该元素不在集合中,无影响。 |
s.remove (element) | 删除集合的一个元素,如果该元素不在集合中,则报错。 |
s0 = {1,2,3}
del s0
s1 = {1,2,3,4}
s1.clear()
print(s1)
s2 = {1,2,3,4,5}
s2.discard(5)
print(s2)
s2.discard(10)
print(s2)
s3 = {1,2,3,4,5}
result = s3.pop()
print(s3,result)
s4 = {1,2,3,4,5}
s4.remove(3)
print(s4)
try:
s4.remove(10)
except:
print("要删除的元素不在集合中")
拷贝
方法 | 说明 |
---|
= | 无拷贝,只是给对象的引用起别名。 |
s.copy () | 深拷贝,产生新内存和新对象。 |
s1 = {1,2,3,4}
s2 = s1
print(s2)
print(id(s1))
print(id(s2))
s2.add(10)
print(s1)
s1 = {1,2,3,4}
s3 = s1.copy()
print(s3)
print(id(s1))
print(id(s3))
s3.add(10)
print(s1)