集合 - set
-
一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素
-
举例:
s=set() print(type(s)) print(s) s={1,2,3,4,5,6} print(type(s)) print(s) 运行结果:<class 'set'> set() <class 'set'> {1,2,3,4,5,6} #如果只用大括号定义,则定义的是一个dict类型 d={} print(type(d)) print(d) 运行结果:<class 'dict'> {}
集合的特征
- 集合内数据无序,即无法使用索引和分片
- 集合内部数据元素具有唯一性,可以用来排除重复数据
- 集合内的数据,str,int,float,tuple,冰冻集合等,即内部只能放置可以哈希数据
集合遍历操作
-
for循环
-
举例:
s={4,5,"i","love","you"} for i in s: print(i,end=" ") 运行结果:i 4 5 you love
-
带有元组的遍历
-
举例:
s={(1,2,3)(“i”,“love”,“you”),(4,5,6),}
for k,m,n in s:
print(k,"–",m,"–"n)
for k in s:
print(k)
运行结果:4–5--6
i–love-you
1–2--3
(4,5,6)
(“i”,“love”,“you”)
(1,2,3)
集合的函数
-
普通集合函数
-
以下集合在初始化后自动过滤掉重复元素
-
举例:
s={23,224,545,3,1,2,3,4,3,2,1,2,4,3} print(s) 运行结果:{545,1,3,2,4,23,223} ss={i for i in s} print(ss) 运行结果:{545,2,3,4,1,23,223} #带有条件的集合函数 sss={i for i in s if i%2==0} print(sss) 运行结果:{2,4} #多循环的集合函数 s1={1,2,3,4} s2={"i","love","you"} s={m*n for m in s2 for n in s1 if n == 2} print(s) 运行结果:{'lovelove','youyou','ii'}
集合函数/关于集合的函数
-
len, max, min:跟其他基本函数一致
s = {43,23,56,223,4,2,1222,4,323,1} print(len(s)) print( max(s)) print(min(s)) 运行结果: 9 1222 1
-
set:生成一个集合
l = [1,2,3,4,3,23,1,2,3,4] s = set(l) print(s) 运行结果:{1, 2, 3, 4, 23}
-
add:向集合内添加元素
s = {1} s.add(334) print(s) 运行结果:{1, 334}
-
clear
s = {1,2,3,4,5} print(id(s)) s.clear() print(id(s)) 运行结果:140040159572936 140040159572936 # 结果表明clear函数是原地清空数据
copy:拷贝
remove:移除制定的值,直接改变原有值,如果要删除的值不存在,报错
discard:移除集合中指定的值,跟remvoe一样,但是入股要删除的话,不报错
pop 随机移除一个元素
s = {1,2,3,4,5,6,7}
d = s.pop()
print(d)
print(s)
运行结果:1
{2, 3, 4, 5, 6, 7}
集合函数
-
intersection: 交集
-
difference:差集
-
union: 并集
-
issubset: 检查一个集合是否为另一个子集
-
issuperset: 检查一个集合是否为另一个超集
s1 = {1,2,3,4,5,6} s2 = {5,6,7,8,9} s_1 = s1.intersection(s2) print(s_1) s_2 = s1.difference(s2) print(s_2) s_3 = s1.issubset(s2) print(s_3) 运行结果:{5, 6} {1, 2, 3, 4} False
集合额数学操作
s1 = {1,2,3,4,5,6}
s2 = {5,6,7,8,9}
s_1 = s1 - s2
print(s_1)
s_2 = s1 + s2
print(s_2)
运行结果:{1, 2, 3, 4}
frozen set:冰冻集合
- 并冻和就是不可以进行任何修改的集合
- frozenset是一种特殊集合
s = frozenset()
print(type(s))
print(s)
运行结果:<class ‘frozenset’>
frozenset()