Python-集合学习笔记(完)

集合

集合是无序可变,元素不能重复。实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一的。

  1. 无序,用{}括起来,不包含重复元素。
  2. 集合中的元素是不可变的数据,但集合本身是可变的数据类型。
  3. 集合不能进行的操作,但可以变相改值(先删除后增加)。
集合的创建

方式一:set

s1 = set({1, 'lucy', False, 'haha'})
print(s1)

方式二:直接创建(建议使用)

s1 = {1, 'lucy', False, 'haha'}
print(s1)  # {'lucy', 1, 'haha', False}

注意:如果上述代码False改为True,由于True1重复,结果只保留1
s1 = {1, 'lucy', True, 'haha'}
print(s1)  # {1, 'haha', 'lucy'}
空集合
1. 空字典
d = {}
print(type(d))  # <class 'dict'>

2. 空集合
s = set()
print(type(s))  # <class 'set'>
列表去重
li = [1, 2, 4, 3, 3, 3, 5, 6, 6, 6]
set1 = set(li)
new_li = list(set1)
print(new_li)  # [1, 2, 3, 4, 5, 6]
集合元素的增加

方式一:add(增加一个元素)

set1 = {'蒙犽', '李白', '韩信'}
set1.add('刘备')

方式二:update(迭代着增加)

set1 = {'蒙犽', '李白', '韩信'}
set1.update(['刘备', '不知火舞', '刘备'])
print(set1)
集合元素的删除

方式一:remove(按照元素删除)

# 指定元素不存在会报错
set1 = {'蒙犽', '李白', '韩信'}
set1.remove('李白')
print(set1)  # {'蒙犽', '韩信'}

方式二:pop(随机删除一个元素)

set1 = {'蒙犽', '李白', '韩信'}
set1.pop()
print(set1)  # {'蒙犽', '李白'}

方式三:clear(清空集合)

set1 = {'蒙犽', '李白', '韩信'}
set1.clear()
print(set1)  # set()

方式四:del(删除集合)

set1 = {'蒙犽', '李白', '韩信'}
del set1

方式五:discard(移除指定的集合元素)

# 如果元素不存在,则不执行任何操作
set1 = {2, 5, 1, 7, 8}
set1.discard(5)
print(set1)  # {1, 2, 7, 8}

set1 = {2, 5, 1, 7, 8}
set1.discard(9)
print(set1)  # {1, 2, 5, 7, 8}
集合的变相改值
# 将集合中'李白'改为'lucy'

set1 = {'蒙犽', '李白', '韩信'}
set1.remove('李白')
set1.add('lucy')
print(set1)  # {'韩信', '蒙犽', 'lucy'}
集合的运算
1. 交集

符号:& 或者 intersection()

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

print(set1 & set2)  # {4, 5}
print(set1.intersection(set2))  # {4, 5}
2. 并集

符号:| 或者 union()

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

print(set1 | set2)  # {1, 2, 3, 4, 5, 6, 7, 8}
print(set1.union(set2))  # {1, 2, 3, 4, 5, 6, 7, 8}
3. 差集

符号:- 或者 difference()

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

print(set1 - set2)  # {1, 2, 3}
print(set1.difference(set2))  # {1, 2, 3}
4. 反交集

符号:^ 或者 symmetric_difference()

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

print(set1 ^ set2)  # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}
5. 子集与超集
  • 子集(符号:< 或者 issubset()
# set1 包含于 set2
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5, 6}
print(set1 < set2)  # True
print(set1.issubset(set2))  # True
  • 超集(符号:> 或者 issuperset()
# set2 包含 set1
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5, 6}
print(set2 > set1)  # True
print(set2.issuperset(set1))  # True
  • 34
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Aspirantlu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值