python基础-集合set及内置方法

网友投稿 251 2022-08-01

数据类型之集合-set

用途:多用于去重,关系运算

定义方式:通过大括号存储,集合中的每个元素通过逗号分隔。集合内存储的元素必须是不可变的,因此,列表-List 和字典dict 不能存储在集合中

注意:定义空集合时,必须使用set定义。

# 定义空集合

s1 = set()

print(type(s1))

# 非空集合定义

s2 = {1,2,'a',2,'b'} # s2 = set({1,2,'a','b'})

print("s2:{}".format(s2))

# 使用list 或tuple 或dict 作为输入集合,重复元素在set 中会自动被过滤

s3 = set([1,2,3,2,4])

print(type(s3))

print(s3) # 输出:{1,2,3,4}

s4 = set((1,2,3,1,2))

print(s4) # 输出:{1,2,3}

s5 = set({1:"alex",2:"egon",3:"sean"})

print(s5) # 输出:{1,2,3}

特性:无序、可变、去重且可存储多个值的数据类型

常用方法

数学运算

合集:数学上的并集,两个集合相加,去重后的元素。用 | 表示

a = {1,2,3,4}

b = {3,4,5,6}

print(a | b) # 打印结果:{1,2,3,4,5,6}

交集:两个集合都存在且去重后的元素。用 & 表示

a = {1,2,3,4}

b = {3,4,5,6}

print(a & b) # 打印结果:{3,4}

差集:集合a 和集合b ,集合a 减去 集合b 的元素。用 - 表示

a = {1,2,3,4}

b = {3,4,5,6}

print(a - b) # 打印结果:{1,2}

print(b - a) # 打印结果:{5,6}

对称差集:减去同时存在于两个集合的元素,余下的元素就是对称差集。用 ^ 表示

a = {1,2,3,4}

b = {3,4,5,6}

print(a ^ b) # 打印结果:{1,2,5,6}

集合的增删改查

add

语法:set.add() 给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作

s1 = set([1,2,3,4,5,4,3])

s1.add('6')

s1.add(3) # 可以添加已存在的元素,但是不会有任何效果

print(s1) # 打印结果:{1,2,3,4,5,'6'}

注意:add 方法不可以添加列表或字典,因列表和字典是可变的数据类型

update

语法:set.update() 可以将列表,元组,字符串,字典中的元素打散增加到集合中

s1 = {1,2,3}

l1 = ['a','b','c']

s1.update(l1)

print(s1) # 打印结果:{1,2,3,'a','b','c'}

s2 = {1,2,3}

t1 = ('1','2',3,4)

s2.update(t1)

print(s2) # 打印结果:{1,2,3,'1','2',4}

s3 = {1,2,3}

str1 = "dawn"

s3.update(str1)

print(s1) # 打印结果:{1,2,3,'d','a','w','n'}

s4 = {1,2,3}

d1 = {"name":"sean","age":18,"hobby":["read","study"]}

s4.update(d1)

print(s1) # 打印结果:{1,2,3,'name','age','hobby'} 取字典的key 作为元素

difference_update

语法:set.difference_update(set1) 移除两个集合中都存在的元素并将值返回给set,set1不会改变

s1 = {'a','e',1,2}

s2 = {'e',1,2,3}

s1.difference_update(s2)

print(s1) # 打印结果:{'a'}

print(s2) # 打印结果:{1,2,3,'e'}

remove

语法:set.remove() 移除集合中的元素,如果集合中没有这个元素则会报错

s1 = {1,2,'e','4'}

s1.remove(2)

print(s1) # 打印结果:{1,'e','4'}

s1 = {1,2,'e','4'}

s1.remove(4) # 报错,集合中没有这个元素

print(s1)

discard

语法:set.discard() 和remove 一样都是移除集合中的元素,但如果结合中没有这个元素不会报错,这就是跟remove 的区别

s1 = {1,2,'e','4'}

s1.discard('2') # 不报错

print(s1) # 打印结果:{1,2,'e','4'}

s1 = {1,2,'e','4'}

s1.discard(2)

print(s1) # 打印结果:{1,'e','4'}

扩展

frozenset 是不可变的集合

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python基础(14):生成器、列表推导式(python列表生成式原理)
下一篇:python基础(15):内置函数(一)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~