一.概念
- 无序可变序列
- 形式:用{}作定界符
- 集合内的元素不允许重复
aset={1,2,3,4,5,1,1,1,1}
print(aset) #输出结果:{1, 2, 3, 4, 5}
- 集合内只能包含数字、字符串、元组等不可变数据类型的数据,不能包含列表、字典、集合等
- 可哈希:不可变数据类型,数字、字符串、元组
二.字典的创建与删除
1.创建
- a={1,3}
- set([1,2,3,4,5,6,7]),
list1=[1,(2,3),4,'string',[5]]
set(list1) #输出结果:异常,列表中存在不可哈希的数据类型
list1=[1,(2,3),4,'string']
print(set(list1)) #输出结果:{(2, 3), 1, 4, 'string'}
- 集合推导式
set1={i for i in[1,(2,3),4,'string']}
print(set1) #{(2, 3), 1, 4, 'string'}
2.增加
- add()方法,若增加元素已存在则自动忽略,不会出现异常
- update()合并另外一个集合到当前集合中,并自动去除重复元素
3.删除
- clear()方法,清空整个集合
- pop()方法,随机返回并删除一个集合元素,若集合为空则抛出异常
- remove(value)方法,删除集合中特定的元素,若元素不存在则抛出异常
- discard(value),删除一个特定元素,如果元素不存在则自动忽略
4.集合运算
内置函数len(),max(),min(),sum(),sorted(),map(),filter(),enumerate()等也适用于集合。另外,Python集合还支持数学意义上的交集、并集、差集等运算。
- 交集 &或intersection()
- 并集 |或union()
- 差集 -或difference()
setA={1,2,3,4,5,6,7}
setB={1,3,5,7,9}
print(setA & setB) #{1, 3, 5, 7}
print(setA | setB) #{1, 2, 3, 4, 5, 6, 7, 9}
print(setA - setB) #{2, 4, 6}
print(setA) #{1, 2, 3, 4, 5, 6, 7}
print(setB) #{1, 3, 5, 7, 9}
三.序列解包
1.序列解包就是Python允许一次给多个值赋值
a,b,c=1,2,3
(x,y,z)=(4,5,6)
x,y,z=(4,5,6)
(j,d,k)=[4,5,6]
m,n,q=map(str,range(3))
m,n,q=map(str,range(3))
print(m) #0
print(n) #1
print(q) #2
print(type(m)) #<class 'str'>
2.使用序列解包可以很方便地同时遍历多个序列
key=['a','b','c']
values=(1,2,3)
for k,v in zip(key,values):
print((k,v),end=" ") #('a', 1) ('b', 2) ('c', 3)