集合类型内置方法
集合类型内置方法
一、作用
就是存储一堆元素的东西, 容器类型数据
二、定义方式
以{}用逗号隔开不可变数据类型(重复的元素会去掉),注意当s = {}定义时,他是是字典,不是集合,定义空集合必须得用set(),打印顺序随机
s = {1, 2, 1, 'a', 'a', 'c'}
# s = {[1,2], 23, 3, 4, 5, 6, 4, 32, 4, '12', 'e', 'sdf'} # 报错
print(s)
结果:
{1, 2, 'a', 'c'}
三、内置方法
-
长度len()
pythoners = {'小明', '小红', '小花', '小李'} print(len(pythoners))
结果:
4
-
in/ not in
pythoners = {'小明', '小红', '小花', '小李'} print('小红' in pythoners)
结果:
True
-
|并集、union 全部
pythoners = {'小明', '小红', '小花', '小李'} linuxers = {'小明', '小田', '小米', '小芳'} print(pythoners | linuxers) print(pythoners.union(linuxers))
结果:
-
&交集、intersection 公共的
pythoners = {'小明', '小红', '小花', '小李'} linuxers = {'小明', '小田', '小米', '小芳'} print(pythoners & linuxers) print(pythoners.intersection(linuxers))
结果:
-
-差集、difference 去除与自己相同的
pythoners = {'小明', '小红', '小花', '小李'} linuxers = {'小明', '小田', '小米', '小芳'} print(pythoners - linuxers) print(pythoners.difference(linuxers))
结果:
-
^对称差集、symmetric_difference,去除公共的
pythoners = {'小明', '小红', '小花', '小李'} linuxers = {'小明', '小田', '小米', '小芳'} print(pythoners ^ linuxers) print(pythoners.symmetric_difference(linuxers))
{'小芳', '小红', '小田', '小花', '小米', '小李'}
三、了解方法
-
删除(随机删除最后一项)pop()
pythoners = {'小明', '小红', '小花', '小李'} linuxers = {'小明', '小田', '小米', '小芳'} pythoners.pop() print(pythoners)
结果:
-
添加集合(两个集合合并在一起)
pythoners = {'小明', '小红', '小花', '小李'} linuxers = {'小明', '小田', '小米', '小芳'} pythoners.update(linuxers) print(pythoners)
结果:
-
清空clear()
pythoners = {'小明', '小红', '小花', '小李'} linuxers = {'小明', '小田', '小米', '小芳'} pythoners.clear() print(pythoners)
结果:
set()
-
复制
pythoners = {'小明', '小红', '小花', '小李'} linuxers = {'小明', '小田', '小米', '小芳'} print(pythoners.copy())
结果:
-
移除remove(),不存在会报错
pythoners = {'小明', '小红', '小花', '小李'}
pythoners.remove('小明')
print(pythoners)
结果;
{'小李', '小红', '小花'}
-
移除discard(),移除不存在,不会报错
pythoners = {'小明', '小红', '小花', '小李'} pythoners.discard('小红') print(pythoners)
结果:
-
判断是否是子集
pythoners = {'小明', '小红', '小花', '小李'} pythoners2 = {'小明', '小红', '小花', '小李', "小芳"} print(pythoners.issubset(pythoners2))
结果:
True
-
判断是否是他的父集
pythoners = {'小明', '小红', '小花', '小李'} pythoners2 = {'小明', '小红', '小花', '小李', "小芳"} print(pythoners.issuperset(pythoners2)) print(pythoners2.issuperset(pythoners))
结果:
False
Truepythoners = {'小明', '小红', '小花', '小李'} linuxers = {'小明', '小田', '小米', '小芳'} # 删除这个集合和另一个集合相同的数据 pythoners.difference_update(linuxers) print(pythoners) # # # pythoners.symmetric_difference_update(linuxers) # print(pythoners) # 判断两个集合是否有交集,没有返回true,无返回false # res = pythoners.isdisjoint(linuxers) # print(res) # 有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序 stu_info_list = [ {'name': 'nick', 'age': 19, 'sex': 'male'}, {'name': 'egon', 'age': 18, 'sex': 'male'}, {'name': 'tank', 'age': 20, 'sex': 'female'}, {'name': 'tank', 'age': 20, 'sex': 'female'}, {'name': 'egon', 'age': 18, 'sex': 'male'}, ] new_stu_info_list = [] for stu_info in stu_info_list: if stu_info not in new_stu_info_list: new_stu_info_list.append(stu_info) for new_stu_info in new_stu_info_list: print(new_stu_info)
-
存一个值or多个值:多个值,且值为不可变类型。
-
有序or无序:无序
-
可变or不可变:可变数据类型
四、总结
4.1 常用操作
- 长度len
- 成员运算in和not in
- |并集、union
- &交集、intersection
- -差集、difference
- ^对称差集、symmetric_difference
- ==
- 父集:>、>= 、issuperset
- 子集:<、<= 、issubset
4.2 常用方法
- add
- remove
- difference_update
- discard
- isdisjoint
在当下的阶段,必将由程序员来主导,甚至比以往更甚。