python基础 13. 集合

集合

  什么是集合
    python语言提供的内置数据结构
    与列表、字典一样独属于可变类型序列
    集合是没有value的字典
  集合的创建
    集合的顺序是混乱的,第一个放入的数据未必排在第一位
    集合内的单个元素不能重复,会把重复的去掉
1
2
3
4
5
6
7
8
9
10
11
# 集合创建
a = set()  # 集合不能用{}创建
b = {'a', 'b', 'c', 'd'}
c = set('abcdefga')
d = set(range(5))
e = set([1, 2, 3, 4, 4, 6])
print(a, type(a), id(a))  # 空集合
print(b, type(b), id(b))  # 集合的顺序是混乱的,第一个放入的数据未必排在第一位
print(c, type(c), id(c))  # 只会输出一个a,不允许重复元素,否则会去掉后续重复元素
print(d, type(d))
print(e, type(e))
0
集合的常用操作
    集合元素的判断操作
      in和not in
    集合元素的新增操作
      调用add(),一次添加一个元素
      调用update(),一次至少添加一个元素
    集合元素的删除操作
      调用remove()方法,一次删除一个指定元素,如果指定的元素不存在则抛出keyeroor
      调用discard()方法,一次删除一个指定元素,如果指定元素不存在抛出异常
      调用pop()方法,一次只删除一个任意元素
      调用clear()方法,清空集合
1
2
3
4
5
6
7
8
9
10
11
# 集合元素的删除
a = {1, 2, 3, 4, 5, 10, 20, 30, 100, 40, '6', 52}
a.remove(100)
# a.remove(200)  # 不存在时,抛出KeyError: 200
a.discard(40)
a.discard(50# 不存在时,不报错
a.pop()
# a.pop(2)  # 指定元素删除时,抛出TypeError: set.pop() takes no arguments (1 given)
print(a)
a.clear()
print(a)
0
  集合间的关系
    两个集合是否相等
      可以使用运算符 == 或 != 进行判断
    一个集合是否是另一个集合的子集
      可以调用方法issubset进行判断
      B是A的子集
    一个集合是否是另一个集合的超集
      可以调用方法issuperset进行判断
      A是B的超集
    两个集合是否没有交集
      可以调用方法isdisjoint进行判断
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 集合之间的关系
# 两个集合是否相等
s = {10, 20, 30, 40}
a = {20, 30, 40, 10}
print(s == a)  # 集合的元素是无序的,只要内容相同,存储顺序是相通的
print(s != a)
 
# 一个集合是否是另一个集合的子集
a = {1, 2, 3, 4, 5, 6, 7}
b = {1, 2, 3, 4, 5}
print(b.issubset(a))
print(a.issubset(b))
 
# 一个集合是否是另一个集合的超集
a = {1, 2, 3, 4, 5, 6, 7}b = {1, 2, 3, 4, 5}
print(a.issuperset(b))
print(b.issuperset(a))
 
# 两个集合是否没有交集
a = {1, 2, 3, 4}
b = {5, 6, 7}
c = {1, 4, 5}
print(a.isdisjoint(b))  # 没有交集则返回True,有交集则返回False
print(a.isdisjoint(c))
0
  集合的数学操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# # 集合的数学操作
# 交集
a = {1, 2, 3, 4}
b = {1, 'b', 3, 'd'}
print(a.intersection(b))  # 交集
print(a & b)
 
# 并集
a = {1, 2, 3, 4}
b = {1, 'b', 3, 'd'}
print(a.union(b))  # 并集
print(a | b)
 
# 差集
print(a.difference(b))  # a集合中不属于交集的元素
print(a - b)
 
# 对称差集
print(a.symmetric_difference(b))  # 两个集合的差集总和
print(a)
print(b)
0
  集合生成式
    用于生成集合的公式:{ i*i for i in range(1,10)}
      将{}修改为[]就是列表生成式
      没有元组生成式
1
2
3
# 集合生成式
a = {i * i for i in range(1, 10)}
print(a)
0

列表、字典、元组、集合总结

数据结构
是否可变
是否重复
是否有序
定义符号
列表(list)
可变
可重复
有序
[]
元组(tuple)
不可变
可重复
有序
()
字典(dict)
可变
key不可重复
无序
{key:value}
value可重复
集合(set)
不可变
不可重复
无序
{}
posted @   乌醍  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示