集合函数内置方法(set)

一、集合类型内置方法(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}
{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'}
{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, 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
{1, 2, 3, 6, 7, 8, 'a', 'c', '4'}

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不变,所以是可变类型

原文地址:https://www.cnblogs.com/wwbplus/p/11321965.html