Python:集合推导式

B站影视 韩国电影 2025-08-24 07:02 2

摘要:在 Python 中,集合推导式(Set Comprehension) 是一种简洁的语法,用于从可迭代对象中快速生成集合。它与列表推导式类似,但返回的是集合(set),具有元素唯一性与无序性的特点。

在 Python 中,集合推导式(Set Comprehension) 是一种简洁的语法,用于从可迭代对象中快速生成集合。它与列表推导式类似,但返回的是集合(set),具有元素唯一性与无序性的特点。

一、什么是集合推导式?

集合推导式可以在一行表达式中实现:遍历 → 处理 → 构造集合。

基本语法:

{表达式 for 变量 in 可迭代对象 if 条件}

for 后面的部分:指定迭代的数据源,并可添加条件筛选。

for 前面的部分:对每个元素进行映射或处理。

返回的结果是一个 set 集合。

示例:平方数集合(去重)

squares = {x**2 for x in range(-3, 4)}print(squares) # {0, 1, 4, 9} #如 -3 与 3、-2 与 2 的平方重复,被自动去掉

语法比较:

( x for x in range(5) ) # 生成器表达式,使用 [ x for x in range(5) ] # 列表推导式,使用 { x for x in range(5) } # 集合推导式,使用 {}{ x: x**2 for x in range(5) } # 字典推导式,含冒号 :

二、带条件的集合推导式

集合推导式中可以使用 if 条件来筛选元素,或使用三元表达式进行条件赋值。

1、条件筛选

示例:提取字符串中所有小写字母

text = "mediaTEA!"letters = {c for c in text if c.islower}print(letters) # {'d', 'e', 'a', 'm', 'i'}

2、条件赋值(三元表达式)

示例:奇偶标签集合

labels = {"even" if x % 2 == 0 else "odd" for x in range(5)}print(labels) # {"even", "odd"}

提示:

使用条件赋值时,若映射结果重复,集合会自动合并。

三、嵌套循环的集合推导式

和列表推导式类似,集合推导式也支持嵌套循环,常用于生成组合或笛卡尔积。

示例:生成二维坐标点集合

points = {(x, y) for x in range(2) for y in range(3)}print(points)# {(0, 1), (1, 1), (0, 0), (1, 2), (0, 2), (1, 0)}

说明:结果是一个集合,包含所有 (x, y) 的组合,顺序不固定。

四、集合推导式应用场景

1、快速去重

words = ["apple", "banana", "apple", "pear", "banana"]unique_words = {w for w in words}print(unique_words) # {"apple", "banana", "pear"}

2、从字符串中提取唯一字符

text = "hello world"letters = {ch for ch in text if ch.isalpha}print(letters) # {'h', 'd', 'l', 'e', 'r', 'w', 'o'}

3、基于条件的集合构建

nums = {x for x in range(20) if x % 3 == 0}print(nums) # {0, 3, 6, 9, 12, 15, 18}

五、补充说明

1、集合元素必须可哈希。

集合元素必须是不可变类型,例如数值、字符串、元组等。

列表、字典等不可哈希对象不能作为集合元素。

2、集合无序,因此打印结果的顺序可能不同。若需保留顺序,应使用 dict.fromkeys 或有序容器。

小结

集合推导式提供了一种简洁方式来生成集合,支持条件筛选与嵌套循环。它常用于去重、提取唯一元素和过滤数据,是 Pythonic 风格代码的重要工具。

“点赞有美意,赞赏是鼓励”

来源:晴朗教育

相关推荐