Python自学第七天——集合

作为新手自学Python的第七天,技术低微,希望可以通过这种方式督促自己学习。

个人学习环境:python3.9,PyCharm 2021.3.2 (Community Edition)

———————————————————————————————————————————

集合是Python语言提供的内置数据结构,与列表、字典一样都是可变类型的序列

集合是没有value的字典

1、集合的创建

第一种:使用'{ }'

sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu', 'Baidu'}
# 输出集合,重复的元素被自动去掉
print(sites)
"""
结果为:
{'Baidu', 'Runoob', 'Google', 'Facebook', 'Taobao', 'Zhihu'}
"""

输出结果为乱序说明集合具有无序性

集合中的元素不允许重复

第二种:使用内置函数set()

s1 = set(range(6))
print(s1, type(s1))
"""
结果为:
{0, 1, 2, 3, 4, 5} <class 'set'>
"""

使用set()可以将数组、元组、列表、字符串、集合等转为集合

s2 = set('Python')
print(s2)
"""
结果为:
{'n', 'o', 'P', 'y', 't', 'h'} <class 'set'>
"""
# 定义一个空集合
s3 = set()  # 如果使用'{}'直接定义的话,数据类型是字典类型

2、集合的相关操作

2.1 集合元素的判断操作

        innot in

2.2 集合元素的新增操作

第一种:使用add()方法,添加单个元素

第二种:使用update()方法,添加多个元素

s = {10, 20, 30, 400, 500}
s.add(80)
print(s)
"""
结果为:
{400, 80, 20, 500, 10, 30}
"""
s.update({200, 300, 600})
print(s)
"""
结果为:
{200, 10, 300, 400, 80, 20, 500, 600, 30}
"""

update()中可以新添的元素类型有集合、列表、元组,不过列表、元组只是将其中的元素添加至集合,不是添加列表、元组

2.3 集合的删除操作

第一种:使用remove()方法,删除一个指定元素

第二种:使用discard()方法,删除一个指定元素,若元素不存在不报错

第三种:使用pop()方法,删除一个任意元素,不能指定元素

第四种:使用clear()方法,清空集合

3、集合间的关系

3.1 两个集合是否相等(元素相同,就相等)

可以使用运算符 == 或者 != 行判断

3.2 一个集合是否是另一个集合的子集

可以调用方法issubset进行判断

s1 = {10, 20, 30, 40, 50, 60}
s2 = {10, 20, 30, 40}
s3 = {10, 20, 90}
print(s2.issubset(s1))
print(s3.issubset(s1))
"""
结果为:
True
False
"""

3.3 一个集合是否是另一个集合的超集

可以调用方法issuperset进行判断

print(s1.issuperset(s2))
print(s1.issuperset(s3))
"""
结果为:
True
False
"""

3.4 两个集合是否没有交集

可以调用方法isdisjoint进行判断

print(s2.isdisjoint(s3))
s4 = {100, 200, 300}
print(s2.isdisjoint(s4))
"""
结果为:
False   有交集为False
True    没有交集为True
"""

4、集合的数学操作

# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
# a 和 b 的差集
print('差集为:')   # difference() 与 - 等价
print(a.difference(b))
print(a - b)
# a 和 b 的并集
print('并集为:')   # union() 与 | 等价
print(a.union(b))
print(a | b)
# a 和 b 的交集
print('交集为:')   # intersection() 与 & 等价
print(a.intersection(b))
print(a & b)
# a 和 b 中不同时存在的元素
print('对称差集:')  # symmetric_difference() 与 ^ 等价
print(a.symmetric_difference(b))
print(a ^ b)
"""
结果为:
{'a', 'r', 'c', 'b', 'd'}
差集为:
{'r', 'b', 'd'}
{'r', 'b', 'd'}
并集为:
{'m', 'a', 'l', 'r', 'c', 'b', 'z', 'd'}
{'m', 'a', 'l', 'r', 'c', 'b', 'z', 'd'}
交集为:
{'a', 'c'}
{'a', 'c'}
对称差集:
{'m', 'z', 'b', 'l', 'r', 'd'}
{'m', 'z', 'b', 'l', 'r', 'd'}
"""

5、集合生成式

用于生成集合的公式

{ i * i for i in range(1,10) }

注意:将 { } 修改为 [ ] 就是列表生成式,没有元组生成式

lst = [i*i for i in range(10)]
print(lst)
​
a = {i*i for i in range(10)}
print(a)
​
"""
结果为:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}
"""

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Wei730050

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

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

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

打赏作者

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

抵扣说明:

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

余额充值