Python集合

Python集合

前言

Python中的集合与我们数学意义上的集合差不多:无序,互异.
并且能进行相应的集合运算.

新建一个集合

方法一:

s = {1, 2, 3, 4} 

注意:

  1. 用这个方法创建的集合,如果在初始的时候输入了相同的元素,会自动根据元素的互异性进行排重.
    如下:
# 演示集合的互异性
s2 = {1,2,3,4,5,4,3,2,1}
print(s2)

输出结果如下:

{1, 2, 3, 4, 5}
  1. 用这种方法不能创建空的集合.因为这种方法创建的是空的字典,不是空的集合
s3 = {}  # 这样创建的是空的字典

方法二:

s3 = set(1,2,3,4,5)
s4 = set()

用这种方法可以创建空的集合

方法三:

与列表推导式一样的方法

s5 = {x for x in range(5)}
print(s5)  # 输出"{0,1,2,3,4}

增加元素

方法一:add()

s5.add(5)   # 这种方法添加的元素,如果集合内已经存在了,则不会起作用.如果不存在,才会加入集合

方法二:update()

# 参数可骒列表
s5.update([6, 7, 8, 9, 10])
print(s5)  # 输出: {0, 1, 2, 3, 4, 6, 7, 8, 9, 10}

# 参数可以是元组
s5.update((11,12))
print(s5)  # 输出: {0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12}

# 参数可以是集合
s5.update({13,14})
print(s5)  # {0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14}

# 参数可以是字典
s5.update({"name":"Tom", "age": 13})
print(s5)  #  {0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 'age', 'name'}

# 参数可以有多个,且类型可以不一样
s5.update([15,16], {17, 18})
print(s5)  # 输出{0, 1, 2, 3, 4, 'name', 6, 7, 8, 9, 10, 11, 12, 13, 14, 'age', 15, 16, 17, 18}

注意:
1.update()参数可以是列表,元组,字典,集合.
当参数是字典的时候,会将Key加入集合,value会自动忽略,要想加入value,可以用.values()方法获取value的列表
2. 参数可以不唯一

删除元素

方法一: remove()

s5.remove(0)
print(s5)   # 输出{1, 2, 3, 4, 'name', 6, 7, 8, 9, 10, 11, 12, 13, 14, 'age', 15, 16, 17, 18}

注意:此方法如果元素不存在,会报错:

KeyError

方法二:discard()

# 删除不存在的元素也不会报错
s5.discard(0)  
print(s5)  # 输出{1, 2, 3, 4, 'name', 6, 7, 8, 9, 10, 11, 12, 13, 14, 'age', 15, 16, 17, 18} 
# 删除指定的元素
s5.discard(1) 
print(s5) # 输出{2, 3, 4, 'name', 6, 7, 8, 9, 10, 11, 12, 13, 14, 'age', 15, 16, 17, 18}

方法三:pop()

删除第一个元素,并让集合重新乱序

x = s5.pop()
print(s5)

第一次运行的结果

{3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 'name', 'age'}

第二次运行的结果

{3, 4, 'name', 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 'age'}
{3, 4, 'age', 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 'name'}

清空集合:clear()

s4.clear()

3 in s5  # 返回True
2 in s5 # 返回False

集合运算

并集

# 集合运算
s6 = {1,2,3,4}
s7 = {3,4,5,6}
s8 = s6.union(s7)  # 并集
print(s8) # 输出{1, 2, 3, 4, 5, 6}
s9 = s6.intersection(s7)  # 交集
print(s9) # 输出{3, 4}
s10 = s6.difference(s7)  # 差集: 所有属于前集合但不属于参数集合的元素组成的集合
print(s10) # 输出{1, 2}

集合中的其他运算:

  1. 判断参数是不是调用者的子集:issubset()
s11 = {1,2}
s12 = {1,2,3,4,5}

x = s6.issubset(s11)
y = s6.issubset(s12)
print(x,y) # 输出False True  
  1. 判断调用者是不是参数的子集:issuperset()
z = s6.issuperset(s11)  # z = true
  1. 一些其他的方法
isdisjoint()  # 判断两个集合是否有公共元素(有返回True,否则返回False)
symmetric_difference() # 返回两个集合的互异元素组成的集合
symmetric_difference_update() # 返回两个集合中的互异元素组成的集合:等价于并集 - 交集

后记:

Python中的基本数据类型终于更新的差不多了.
下一节开始,重新回到应用方面的更新了.
敬请期待

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的章老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值