第八章 元组和集合
元组
元组的创建
元组是不可变序列,存储是有序的
- 使用()
- 使用内置函数tuple()
t = (1,0,2,3)
t1 = tuple((1,2,3,4))
t2 = 1,2,3,4 # 可以省略小括号
t3 = (2,) # 一个元组只要一个元素的时候,逗号不能省略
元组的遍历
使用 for … in …
t = (1,0,2,3)
for i in t:
print(i)
集合
集合的创建
集合是可变序列,存储是无序的,并且不存在重复元素
- 使用{}
- 使用内置函数set()
- 使用集合生成式
s1 = {10,20,30}
s2 = set({10,20,30})
s3 = {i*i for i in range(10)}
s4 = set([10,20,30]) # 将列表转换成集合
s5 = set((10,20,30)) # 将元组转换成集合
s6 = set('python') # 将字符串转换成集合
s7 = set() # 生成一个空集合
s8 = {} # 生成的是空字典
集合的遍历
使用 for…in…
s1 = {10,20,30}
for i in s1:
print(i)
集合的操作
- 对集合元素的操作:增删判断
s1 = {10,20,30}
# 新增
s1.add(40) # 新增一个元素
s1.update({50,60,70}) # 新增至少一个元素,也可以是列表,元组
s1.update([50,60,70])
s1.update((50,60,70))
# 删除
s1.remove(10) # 删除指定元素,如果该元素不存在,则报错
s1.discard(10) # 删除指定元素,如果该元素不存在,不会报错
s1.pop() # 随机删除一个元素
# 判断 in/ not in
10 in s1 # True
10 not in s1 # False
- 对集合数据进行操作:判断集合的关系和求交集,并集,差集,对称差集
s1 = {10,20,30}
s2 = {20,30,10}
# 判断两个集合是否相等
s1 == s2 # True 元素的值相等,集合就相等
s1 = {10,20,30,40,50,60}
s2 = {20,30,10,40}
s3 = {10,20,90}
# 判断一个集合是否是另一个集合的子集
s2.issubset(s1) # True s2是s1的子集
s3.issubset(s1) # False s3不是s1的子集
# 判断一个集合是否是另一个集合的超集
s1.issuperset(s2) # True s1是s2的超集
s1.issuperset(s3) # False s1不是s3的超集
# 判断两个集合是否没有交集
s2.isdisjoint(s3) # False s2和s3有交集
s4={100,200}
s2.isdisjoint(s4) # True s2和s4没有交集
s1={10,20,30,40}
s2 = {10,50,30}
# 求交集
s1 & s2
s1.intersection(s2)
# 求并集
s1 | s2
s1.union(s2)
# 求差集
s1-s2
s1.difference(s2)
# 求对称差集
s1^s2
s1.symmetric_difference(s2)