1.集合set
集合类型一个无序的不重复元素序列。(无法使用索引取值)
特征:用大括号括起来,可以存放多个元素,元素与元素用逗号隔开,元素自动去重只会保留一个。
集合的元素不能是列表和字典.
格式:(元素不能存列表和字典)
变量名 = {元素1, 元素2,}
只有两种情况下猜会考虑使用集合:
1.去重操作
2.关系运行
2.集合的定义
set1 = {1, 2, 3, 4, 'xx', 5, (1,), 1, 2, }
print(set1, type(set1))
set1 = {1, [1, ]}
print(set1, type(set1))
set1 = {1, {'k1', 18}}
print(set1, type(set1))
3.去重
set1 = {1, 2, 6, 5, 3, 7, 5, 4, 5, 2, 6, 1, 5, 5, 4, 5, 5, 9, 5, 8, 5, 6, 5, 6, 5, }
for i in set1:
print(i, end=' ')
print(set1)
1 2 3 4 5 6 7 8 9 {1, 2, 3, 4, 5, 6, 7, 8, 9}
一使用字典的数据就会去重。
4.关系运算
将内置方法使用 符号 代替。
4.1交集
交集 & 两个集合公有的。运算的结果再{}括号中展示。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}
print(set1 & set2)
4.2不交集
不交集 ^ 两个集合私有的。运算的结果再{}括号中展示。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}
print(set1 ^ set2)
4.3并集
并集 ^ 两个集合所有,去重。运算的结果再{}括号中展示。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}
print(set1 | set2)
4.4差集
差集 - 两个集合相差。运算的结果再{}括号中展示。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}
print(set1 - set2)
print(set2 - set1)
4.4子集父集
子集 < <=
父集 > >=
返回结果为布尔值。
set1 = {1, 3, 5, 7, 8, 4}
set2 = {9, 2, 4, 6, 1, 3}
print(set1 > set2)
print(set1 < set2)
5.长度
len函数获取集合的元素个数。
set1 = {1, 3, 5, 7, 8, 4}
print(len(set1))
6.删除元素
.pop() 弹出
.clear() 清除
set1 = {1, 3, 5, 7, 8, 4}
set1.pop()
print(set1.clear())
7.练习
1.关系运算
有如下两个集合,pythons是学习python课程的同学名字集合,linuxs是报名linux学习的同学名字集合
pythons={'百度','腾讯','阿里云','华为','小米','格力'}
linuxs={'腾讯','华为','格力'}
1. 求出即报名python又报名linux课程的同学名字集合
2. 求出所有报名的同学名字集合
3. 求出只报名python课程的同学名字
4. 求出没有同时这两门课程的同学名字集合
2.列表l = ['a','b',1,'a','a'],去重,得到新列表,且新列表无需保持列表原来的顺序