集合函数内置方法(set)
- 一、集合类型内置方法(set)
- 一、集合:
- 二、作用
- 三、定义
- 四、内置方法
- 了解的是
- 1.copy()
- 2.update() 更新;校正 (针对于对两个集合之间的改变)
- 3.clear() ¥清空。没有返回值
- 4.pop() (随机删除)
- 5.remove() :删除 (找不到要删除的元素就会报错)
- 6.discard():删除 (找不到要删除的元素不会报错,就会不执行删除操作)
- 7.add() (增加元素,注意只能一个一个添加,不能一次添加多个)
- 8.difference_update() (difference_update() 方法用于在第一个集合中移除这一二两个集合共有的元素。)
- 9.子集issubset()
- 10.父集 issuperset()
- 五、 有一个值还是多个值
- 六、 有序(索引)or无序(索引)
- 七、可变or不可变
一、集合类型内置方法(set)
一、集合:
集合可以理解成一个集合体,学习Python的学生可以是一个集合体;学习Linux的学生可以是一个集合体。
pythoners = ['jason', 'nick', 'tank', 'sean']
linuxers = ['nick', 'egon', 'kevin']
py_li_list = []
for stu in pythoners:
if stu in linuxers:
py_li_list.append(stu) #如果重合,则把重合的这个元素加入定义的这个中
print(py_li_list)
['nick']
上述的列表方式求两个集合体的关系运算非常复杂,因此有了我们的集合数据类型。
二、作用
用于关系运算的集合体,由于集合内的元素无序且集合元素不可重复,因此集合可以去重,但是去重后的集合会打乱原来元素的顺序。
三、定义
{}内用逗号分隔开多个元素,每个元素必须是不可变类型。
s = {1, 2, 1, 'a', 'a', 'c'}
print(s)
{'c', 1, 2, 'a'} #去重:重复的全部去掉 #乱序:顺序是乱的
直接定义:s = {}' #空的大括号是字典,而非集合,定义集合必须要用set()
四、内置方法
- 重要的有
1.长度
s = {1, 2, 1, 'a', 'a', 'c','4'}
print(len(s))
5 #实际长度按照去重过后来计算
2.成员运算符
s = {1, 2, 1, 'a', 'a', 'c','4'}
print(1 in s)
print(1 not in s)
True
False
3.|并集 union()
s = {1, 2, 1, 'a', 'a', 'c','4'}
s2 = {2,3,3,6,7,8}
print(s | s2)
print(s.union(s2))
{'a', 1, 2, 3, 6, 7, 'c', 8, '4'}
{'a', 1, 2, 3, 6, 7, 'c', 8, '4'}
4.&交集 intersection()
s = {1, 2, 1, 'a', 'a', 'c','4'}
s2 = {2,3,3,6,7,8}
print(s & s2)
print(s.intersection(s2))
{2}
5.-差集difference()
s = {1, 2, 1, 'a', 'a', 'c','4'}
s2 = {2,3,3,6,7,8}
print(s - s2)
print(s.difference(s2))
{1, 'a', '4', 'c'}
6.^对称差集symmetric_difference
s = {1, 2, 1, 'a', 'a', 'c','4'}
s2 = {2,3,3,6,7,8}
print(s ^ s2)
print(s.symmetric_difference(s2))
{1, 3, 6, 7, 8, 'c', '4', 'a'}
-
了解的是
1.copy()
1.s = {1, 2, 1, 'a', 'a', 'c','4'}
# s.copy()
# print(s) # 可以一次性输出,也可以赋值输出
print(s.copy())
{'a', 1, 2, '4', 'c'} #他会去重。乱序后输出
2.update() 更新;校正 (针对于对两个集合之间的改变)
update() 方法用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
s = {1, 2, 1, 'a', 'a', 'c','4'}
s2 = {2,3,3,6,7,8}
print(s.update(s2))
#在原有的s集合基础上添加集合s2,并没有返回值。故返回为None
s.update(s2)
print(s)
None
3.clear() ¥清空。没有返回值
s = {1, 2, 1, 'a', 'a', 'c','4'}
s.clear()
print(s)
set() #输出的结果是一个空集合
4.pop() (随机删除)
s = {1, 2, 1, 'a', 'a', 'c','4'}
s.pop() #随机删除
print(s)
{2, '4', 'c', 'a'}
5.remove() :删除 (找不到要删除的元素就会报错)
#如果在集合中找不到要删除的元素则会报错
s = {1, 2, 1, 'a', 'a', 'c','4'}
s.remove('a')
print(s)
{1, 2, 'c', '4'}
6.discard():删除 (找不到要删除的元素不会报错,就会不执行删除操作)
s = {1, 2, 1, 'a', 'a', 'c','4'}
s.discard('a')
print(s)
{1, 'c', 2, '4'}
7.add() (增加元素,注意只能一个一个添加,不能一次添加多个)
s = {1, 2, 1, 'a', 'a', 'c','4'}
s.add(9)
print(s)
{1, 2, 9, 'a', 'c', '4'}
8.difference_update() (difference_update() 方法用于在第一个集合中移除这一二两个集合共有的元素。)
s = {1,2,1, 'a', 'a', 'c','4'}
s2 = {2,3,3,6,7,8}
s.difference_update(s2)
print(s)
print(s2)
{1, 'a', '4', 'c'} s有和s2一样的元素的已经被删掉
{2, 3, 6, 7, 8} s2没有什么变化
9.子集issubset()
s = {1,2,1}
s2 = {1,2,3,3,6,7,8}
s = s.issubset(s2) #s是s2的子集
print(s)
True
10.父集 issuperset()
s = {1,2,3, 'a', 'a', 'c','4'}
s2 = {2,3}
s = s.issuperset(s2) #s shis2的父集
print(s)
True
五、 有一个值还是多个值
多个值
六、 有序(索引)or无序(索引)
无序
七、可变or不可变
可变
s = {1,2,2,5,8,}
print(id(s))
s.add(9)
print(s)
print(id(s))
2853886071528
{1, 2, 5, 8, 9}
2853886071528
增加元素前后,集合的id不变,所以是可变类型