前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python入门第九讲】 集合(set)

【Python入门第九讲】 集合(set)

原创
作者头像
GoBoy
发布2024-01-31 08:20:13
14300
代码可运行
发布2024-01-31 08:20:13
举报
运行总次数:0
代码可运行

集合(Set)是 Python 中的一种基本数据结构,它是由不重复元素组成的无序集合。集合对象支持多种数学运算,如并集、交集、差集和对称差等。

集合的特点包括:

  1. 无序性: 集合中的元素没有顺序,不能通过索引访问或修改。
  2. 唯一性: 集合中的元素是唯一的,不会出现重复。
  3. 可变性: 集合是可变的,可以添加或删除元素,但集合本身是可变的,不可作为集合的元素。

集合的创建

使用大括号 {} 或者 set() 函数可以创建一个集合。例如:

要定义一个空集合,可以使用 set() 方法,如下所示:

代码语言:python
代码运行次数:0
复制
empty_set = set()

使用大括号 {} 可以定义一个非空集合。如下所示:

代码语言:python
代码运行次数:0
复制
non_empty_set = {1, 2, 3, 4, 5}

集合的特性

集合的特性之一是其元素的唯一性。在集合中,不允许存在重复的元素,每个元素都是唯一的。这意味着无论你添加多少次相同的元素,集合中都只会保留一个副本。

集合中元素的唯一性:

代码语言:python
代码运行次数:0
复制
# 创建一个包含重复元素的列表
my_list = [1, 2, 3, 4, 5, 1, 2, 3]

# 使用 set() 方法将列表转换为集合
my_set = set(my_list)

# 打印集合
print("集合:", my_set)

除了元素的唯一性之外,集合的另一个重要特性是元素的无序存储。这意味着集合中的元素没有特定的顺序,它们不像列表或元组那样按照索引有序存储。

无序存储的特性使得集合更适合用于快速检查成员资格和去除重复元素,但不适合需要按照索引顺序访问元素的情况。

集合的无序存储特性:

代码语言:python
代码运行次数:0
复制
# 创建一个包含多个元素的集合
my_set = {3, 1, 4, 1, 5, 9, 2, 6, 5}

# 打印集合
print("集合:", my_set)

集合基础方法

add()

向集合中添加元素。

代码语言:python
代码运行次数:0
复制
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)  # 输出: {1, 2, 3, 4}

remove()

从集合中移除指定元素。如果元素不存在,会引发 KeyError 错误。

代码语言:python
代码运行次数:0
复制
my_set.remove(3)
print(my_set)  # 输出: {1, 2, 4}

discard()

从集合中移除指定元素。如果元素不存在,不会引发错误。

代码语言:python
代码运行次数:0
复制
my_set.discard(5)
print(my_set)  # 输出: {1, 2, 4}

pop()

随机删除并返回集合中的一个元素。如果集合为空,会引发 KeyError 错误。

代码语言:python
代码运行次数:0
复制
popped_element = my_set.pop()
print(popped_element)  # 输出: 1

clear()

清空集合中的所有元素。

代码语言:python
代码运行次数:0
复制
my_set.clear()
print(my_set)  # 输出: set()

update()

将其他集合或可迭代对象中的元素添加到集合中。

代码语言:python
代码运行次数:0
复制
my_set.update([5, 6, 7])
print(my_set)  # 输出: {5, 6, 7}

copy()

返回集合的一个浅拷贝(副本)。

代码语言:python
代码运行次数:0
复制
new_set = my_set.copy()
print(new_set)  # 输出: {5, 6, 7}

这些是一些常用的集合基础方法,使用它们有效地操作集合中的元素。

集合内置方法

Python 中的 set 类提供了集合操作相关的内置方法,集合中还提供了部分操作符号与之对应,下面按照类中方法定义的顺序演示。

集合内置函数与集合操作符对于关系可参照下表:

方法

符号

说明

difference

-

计算差集

intersection

&

计算交集

issubset

<

子集判断

symmetric_difference

^

计算对称差集

union

|

计算并集

difference()

返回一个新集合,包含当前集合中有但其他集合中没有的元素。

代码语言:python
代码运行次数:0
复制
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
result = set1.difference(set2)
print(result)  # 输出: {1, 2}

intersection()

返回一个新集合,包含同时在两个集合中的元素。

代码语言:python
代码运行次数:0
复制
result = set1.intersection(set2)
print(result)  # 输出: {3, 4}

issubset()

判断当前集合是否为另一个集合的子集。

代码语言:python
代码运行次数:0
复制
subset = {1, 2}
print(subset.issubset(set1))  # 输出: True

symmetric_difference()

返回一个新集合,包含所有只在一个集合中出现的元素。

代码语言:python
代码运行次数:0
复制
result = set1.symmetric_difference(set2)
print(result)  # 输出: {1, 2, 5, 6}

union()

返回一个新集合,包含两个集合中的所有元素。

代码语言:python
代码运行次数:0
复制
result = set1.union(set2)
print(result)  # 输出: {1, 2, 3, 4, 5, 6}

常用方法

去重操作:

代码语言:python
代码运行次数:0
复制
lst = [1, 2, 3, 4, 1, 2, 5]
unique_set = set(lst)
print(unique_set)  # 输出: {1, 2, 3, 4, 5}

成员关系测试:

代码语言:python
代码运行次数:0
复制
s = {1, 2, 3, 4, 5}
print(3 in s)  # 输出: True
print(6 not in s)  # 输出: True

数学运算:

代码语言:python
代码运行次数:0
复制
s1 = {1, 2, 3}
s2 = {3, 4, 5}
print(s1.union(s2))  # 输出: {1, 2, 3, 4, 5}
print(s1.intersection(s2))  # 输出: {3}

标记与过滤:

代码语言:python
代码运行次数:0
复制
data = {1, 2, 3, 4, 5}
marked = {2, 3}
filtered_data = data - marked
print(filtered_data)  # 输出: {1, 4, 5}

缓存与索引:

代码语言:python
代码运行次数:0
复制
data = {1, 2, 3, 4, 5}
print(3 in data)  # 输出: True

网络数据处理:

代码语言:python
代码运行次数:0
复制
ip_addresses = {'192.168.1.1', '192.168.1.2', '192.168.1.3'}
trusted_ips = {'192.168.1.1', '192.168.1.2'}
unauthorized_ips = ip_addresses - trusted_ips
print(unauthorized_ips)  # 输出: {'192.168.1.3'}

数据库查询结果处理:

代码语言:python
代码运行次数:0
复制
db_results = {'user1', 'user2', 'user3', 'user4', 'user5'}
admins = {'user1', 'user2'}
regular_users = db_results - admins
print(regular_users)  # 输出: {'user3', 'user4', 'user5'}

这些示例展示了集合在不同情境下的应用,利用集合的特性和方法,可以更加方便地处理数据,提高代码的效率。

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集合的创建
  • 集合的特性
    • 集合中元素的唯一性:
      • 集合的无序存储特性:
      • 集合基础方法
        • add():
          • remove():
            • discard():
              • pop():
                • clear():
                  • update():
                    • copy():
                    • 集合内置方法
                      • difference():
                        • intersection():
                          • issubset():
                            • symmetric_difference():
                              • union():
                              • 常用方法
                                • 去重操作:
                                  • 成员关系测试:
                                    • 数学运算:
                                      • 标记与过滤:
                                        • 缓存与索引:
                                          • 网络数据处理:
                                            • 数据库查询结果处理:
                                            领券
                                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档