MEMOO
MEMOO
Published on 2025-04-18 / 2 Visits
0
0

Python集合推导式

摘要:在本节中,你将学习如何使用 Python 的集合推导式,基于一个已有的集合来创建一个新的集合。

Python 集合推导式简介

假设你有下面这样一个由三个标签组成的集合:

tags = {'Django', 'Pandas', 'Numpy'}

要将集合中的标签转换为另一组小写形式的标签,你可以使用以下 for 循环:

tags = {'Django', 'Pandas', 'Numpy'}

lowercase_tags = set()

for tag in tags:

    lowercase_tags.add(tag.lower())

print(lowercase_tags)

输出:

{'django', 'numpy', 'pandas'}

它的工作原理如下:

  • 首先,遍历 tags 集合中的每个元素。

  • 其次,将每个标签转换为小写形式,并将其添加到新的集合(lowercase_tags)中。

或者你可以将内置的 map() 函数与一个 lambda 表达式配合使用:

tags = {'Django', 'Pandas', 'Numpy'}

lowercase_tags = set(map(lambda tag: tag.lower(), tags))

print(lowercase_tags)

map() 函数会返回一个映射对象,所以你需要使用 set() 函数将其转换为一个集合。

为了让代码更加简洁,Python 为你提供了如下的集合推导式语法:

{expression for element in set if condition}

集合推导式允许你基于一个已有的集合创建一个新的集合。

集合推导式包含以下几个步骤:

  • 首先,遍历一个集合中的元素。

  • 其次,对每个元素应用一个表达式。

  • 第三,创建一个由该表达式运算结果所组成的新集合。

此外,集合推导式允许你通过 if 子句中的条件来选择对哪些元素应用该表达式。

请注意,集合推导式会返回一个新的集合,它不会修改原始集合。

回到前面的例子,你可以使用下面的集合推导式来转换 tags 集合中的所有标签:

tags = {'Django', 'Pandas', 'Numpy'}

lowercase_tags = {tag.lower() for tag in tags}

print(lowercase_tags)

输出:

{'numpy', 'pandas', 'django'}

这种语法看起来肯定比 for 循环更加简洁,也比 map() 函数更加优雅。

if 子句的 Python 集合推导式示例

假设你想把 tags 集合中除Numpy 之外的所有元素都转换为小写形式。

要实现这一点,你可以像这样在集合推导式中添加一个条件:

tags = {'Django', 'Pandas', 'Numpy'}

new_tags = {tag.lower() for tag in tags if tag != 'Numpy'}

print(new_tags)

输出:

{'django', 'pandas'}

总结

  • 使用 Python 的集合推导式,通过对现有集合的每个元素应用一个表达式,基于该现有集合来创建一个新的集合。


Comment