提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
集合在实际开发中常用于去重、查找元素是否存在等场景,提供了一种便捷的数据结构,本文就介绍了集合的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、集合是什么?
在Python中,集合是一种无序且可变的数据类型,它是由一组唯一且不可重复的元素组成。集合使用大括号{}来表示,元素之间用逗号分隔。
二、集合的定义
- {a, b, c} ==> 花括号,元素用,隔开;但是不能定义空集合
- set()==> 可以定义空集合,也可以放入可迭代内容
集合中只能存放不可变类型,但集合是可变类型
代码讲解如下:
# 定义
s = {} # 字典
# {}放入元素用,隔开
# {a, b, c}不能定义空集合
s = {1}
print(type(s)) # <class 'set'>
s = {1, 2, 3}
print(type(s)) # <class 'set'>
# 定义空集合
s1 = set()
print(type(s1)) # <class 'set'>
# set()中可以放入可迭代内容
# 集合中只能存放不可变类型
s3 = set("hello")
print(s3, type(s3)) # {'o', 'h', 'l', 'e'} <class 'set'>
s4 = set([1, 2, 3])
print(s4, type(s4)) # {1, 2, 3} <class 'set'>
s5 = set((1, 2, 3))
print(s5, type(s5)) # {1, 2, 3} <class 'set'>
# 将字典的所有键放入集合,值丢失
# 不建议使用
s6 = set({"name": "小王子", "age": "20"})
print(s6, type(s6)) # {'age', 'name'} <class 'set'>
# 集合中只能存放不可变类型
s0 = {10, 3.14, False, True, "hello", None, (1,)}
print(type(s0))
# 会报错
# s0 = {10, 3.14, False, True, "hello", None, (1, ), [1, 2, 3], {"name": "小王子"}}
# print(type(s0))
# 错误信息:unhashable type: 'list', unhashable type: 'dict'
二、集合的特性
集合有两大特性:无序、不重复
-
不重复:相同元素只保存一个
-
无序:没有先后顺序
# 集合的特性:不重复:相同元素只保存一个
# 无序:没有先后顺序
s7 = set((2, 2, 3, 2, 1, 5))
print(s7, type(s7))
# {1, 2, 3, 5} <class 'set'>
s8 = set([2, 2, 3, 2, 1, 5])
print(s8, type(s8))
# {1, 2, 3, 5} <class 'set'>
s9 = set("helloa")
print(s9, type(s9))
# {'h', 'o', 'e', 'a', 'l'} <class 'set'>
三、集合的遍历
请注意:因为集合是无序的,所以无法使用索引遍历,只有一种方法遍历==> for e in s:
s0 = {10, 3.14, False, True, "hello", None, (1,)}
for e in s0:
print(e)
# 结果
# False
# True
# (1,)
# 3.14
# hello
# 10
# None
四、集合的常用操作方法
-
len:获取集合元素个数
-
in:判断原始是否在集合内部
-
add :将元素添加到集合
-
update({1,}):合并一个新集合到原有集合
-
remove():删除集合中指定元素,不存在则报错
-
discard():删除集合中指定元素,不存在也不报错
-
pop():删除任意一个
-
clear():清空集合
集合核心操作
-
交集:&;intersection
-
并集:| ;union
-
差集:- ;difference
-
补集:- ;symmetric_difference (全集:所有可能)
-
超集:issuperset
-
子集:issubset
s1 = {2, 3, 4}
s2 = {3, 4, 5}
# 交集:你有我也有
s3 = s1 & s2
print(s3) # {3, 4}
s3 = s1.intersection(s2)
print(s3) # {3, 4}
# 并集: 你有或者我有
s4 = s1 | s2
print(s4) # {2, 3, 4, 5}
s4 = s1.union(s2)
print(s4) # {2, 3, 4, 5}
# 差集: 我有你没有
s5 = s1 - s2
print(s5) # {2}
s5 = s1.difference(s2)
print(s5) # {2}
# 补集(全集U)
U = {1, 2, 3, 4, 5}
A = {2, 3, 4}
print(U - A) # {1, 5}
print(U.symmetric_difference(A)) # {1, 5}
# 超集
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4}
# 可以把s1成为全集
print(s1.issuperset(s2)) # True
print(s2.issubset(s1)) # True
s3 = s1.intersection(s2)
print(s1, s3) # {1, 2, 3, 4, 5} {3, 4}
s1.intersection_update(s2)
print(s1) # {3, 4}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了集合的使用,希望通过本人的这篇文章可以让你们对集合有一定的了解。加油ヾ(◍°∇°◍)ノ゙