惬意上手Python —— 集合

1. 集合介绍

在Python中,集合(Set)是一种无序可变的数据结构,用于存储多个唯一的元素。集合中的元素不会重复,并且可以进行基本的集合操作,如并集、交集、差集等。  

注意:集合中的元素必须是不可变数据类型,例如 int、str、tuple、bool 等不可变数据类型。

1.1 定义

 创建集合可以使用大括号 {} 或者使用 set() 函数。下面是创建集合的示例:

# 使用大括号创建集合
my_set = {1, 2, 3, 4, 5}

# 使用 set() 函数创建集合
my_set = set([1, 2, 3, 4, 5])

1.2 特性

集合的特点包括: 

  •  集合中的元素是无序的,不能通过索引访问。
  • 集合中的元素是唯一的,重复的元素会被自动去重。
  • 集合中可以存储任意类型的元素,但是不支持存储可变对象,例如列表、字典等。

1.3 遍历

集合的遍历仅有一种方式,那就是直接遍历集合,下面是代码示例:

set1 = {1, 2, 3, 4, 5}
for i in set1:
    print(i, end="")

 输出结果:12345

2. 集合的常见操作

 在数学中,集合最常见的操作就是求集合的并集、差集、交集等。在python中,除了这些操作,集合还能进行添加、删除等操作。

2.1 核心操作

 核心操作就是求交集、并集、差集以及补集,另外还有不怎么常用的超集、子集。以下进行一一的代码演示。

求交集,可以用 &,也可以使用 intersection 函数:

s3 = {2, 3, 4}
s4 = {3, 4, 5}
# 交集:你有我也有
s5 = s3 & s4
print(s5)
s5 = s3.intersection(s4)
print(s5)

输出结果:{3, 4}
                  {3, 4}


 求并集,可以用 | ,也可以用 union 函数:

s3 = {2, 3, 4}
s4 = {3, 4, 5}
# 并集: 你有或者我有
s6 = s3 | s4
print(s6)
s6 = s3.union(s4)
print(s6)

输出结果: {2, 3, 4, 5}
                   {2, 3, 4, 5}


 求差集,可以用 - ,也可以用 difference 函数:

s3 = {2, 3, 4}
s4 = {3, 4, 5}
# 差集: 我有你没有
s7 = s3 - s4
print(s7)
s7 = s3.difference(s4)
print(s7)

输出结果:{2}

                  {2} 


求补集,可以用 - ,也可用 symmetric_difference 函数:

# 补集 (全集 U)
U = {1, 2, 3, 4, 5}
A = {2, 3, 4}
print(U-A)
print(U.symmetric_difference(A))

输出结果:{1, 5}
                  {1, 5} 


超集子集主要用到了两个函数,一个是 issuperset ,一个是 issubset

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4}
# 可以把s1称为全集
# 超集和子集
print(s1.issuperset(s2))
print(s2.issubset(s1))

输出结果:True

                  True

这两个函数主要用于判断两个集合之间的关系,了解就好。 

2.2 添加

 直接上代码!

s2 = {1, 2, 3}
# 添加元素
s2.add(4)
print(s2)

输出结果:{1, 2, 3, 4} 

可以看出,add 函数是直接在集合中插入元素,但是要注意,如果被插入元素在集合中已存在,那么将不会插入,因为集合中不能重复。


 update 函数可以合并集合到原有集合:

s2 = {1, 2, 3}
# 合并新集合到原有集合
s2.update({2, 3, 4, 5})
print(s2)

输出结果: {1, 2, 3, 4, 5}

update 的作用就是更新,把括号里包括的原集合没有的元素,添加到原集合。

2.3 删除

鸡肋函数,pop ,删除集合中任意一个元素。虽然说是任意,但多次尝试,可能会发现每次删除的元素都是同一个元素,这是因为随机算法也是按照一定的规则的,不会像掷硬币那样客观。

s2 = {1, 2, 3}
# 随机删除一个
r = s2.pop()
print(s2, r)

输出结果: {2, 3} 1

 如果你运行上面的代码,会发现每次删除的都是 1. 


remove 函数,才会是你想要的函数,因为它会删除指定元素,但不存在则会报错。代码中演示的是删除 20,但是集合 s2 中并不存在。

s2 = {1, 2, 3}
# 删除一个元素,如果不存在则报错
s2.remove(20)
print(s2)

 所以会报错:

惬意上手Python —— 集合_第1张图片


另外 discard 函数和 remove 函数相似,优点是它删除指定元素时,如果不存在不会报错。

s2 = {1, 2, 3}
# 删除一个元素,如果不存在也不报错
s2.discard(20)
print(s2)

输出结果:{1, 2, 3} 

代码执行的操作是删除20,但20并不存在,所以不报错,原集合也不会改变 。 

2.4 其他操作

另外还有两个操作,都很简单:

  1. 用 len 函数计算集合的长度。
  2. 用成员变量 in 判断某个元素是否在集合中,返回 True 或 False。 
# 集合可以使用in与len
s = {1, 2, 3, 2, 1, 3}
print(type(s), s)
# 计算 s 的长度
print(len(s))
# 判断 5 和 3 是否在集合中
print(5 in s, 3 in s)

 输出结果:

,本文到此结束,如果想要学习更多,可以关注我,我持续更新中~

你可能感兴趣的:(python,开发语言)