Python列表推导式与集合推导式:异同与应用场景

文摘   2024-11-26 21:17   上海  

列表推导式和集合推导式是 Python 中非常强大的工具,可以让你以简洁的方式创建列表和集合。它们在语法上非常相似,但有一些重要的区别。本文将详细介绍列表推导式和集合推导式的基本概念、语法、应用场景以及它们之间的异同点。

1. 列表推导式

基本概念

列表推导式是一种快速创建列表的方法。它允许你在一行代码中生成一个新的列表,而不需要使用传统的 for 循环。

语法

new_list = [expression for item in iterable if condition]
  • expression:对每个元素执行的操作。
  • item:迭代变量。
  • iterable:可迭代对象(如列表、元组、字符串等)。
  • if condition:可选的条件语句,用于过滤元素。

示例

假设我们有一个列表,包含一些数字,我们想创建一个新的列表,其中只包含偶数:

numbers = [12345678910]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers)  # 输出: [2, 4, 6, 8, 10]

2. 集合推导式

基本概念

集合推导式类似于列表推导式,但它用于创建集合而不是列表。集合中的元素是唯一的,没有重复项。

语法

new_set = {expression for item in iterable if condition}
  • expression:对每个元素执行的操作。
  • item:迭代变量。
  • iterable:可迭代对象(如列表、元组、字符串等)。
  • if condition:可选的条件语句,用于过滤元素。

示例

假设我们有一个列表,包含一些数字,我们想创建一个新的集合,其中只包含偶数:

numbers = [12345678910246810]
even_numbers_set = {num for num in numbers if num % 2 == 0}
print(even_numbers_set)  # 输出: {2, 4, 6, 8, 10}

3. 列表推导式与集合推导式的异同

相同点

  • 语法结构相似,都包含表达式、迭代变量、可迭代对象和条件语句。
  • 都可以用于快速生成新的数据结构。
  • 都支持嵌套推导式。

不同点

  • 数据结构:列表推导式生成的是列表,集合推导式生成的是集合。
  • 唯一性:集合中的元素是唯一的,而列表中的元素可以重复。
  • 顺序:列表保持插入顺序,集合不保证顺序。

4. 应用场景

列表推导式

  • 数据处理:快速生成新的列表,例如过滤、转换数据。
  • 性能优化:相比传统的 for 循环,列表推导式通常更高效。

集合推导式

  • 去重:快速去除重复元素。
  • 集合操作:进行集合运算,如并集、交集、差集等。

5. 实践示例

列表推导式示例

假设我们有一个列表,包含一些字符串,我们想创建一个新的列表,其中每个字符串都被转换为大写:

words = ['apple''banana''cherry']
upper_words = [word.upper() for word in words]
print(upper_words)  # 输出: ['APPLE', 'BANANA', 'CHERRY']

集合推导式示例

假设我们有两个列表,分别包含一些数字,我们想找到两个列表中的公共元素:

list1 = [12345]
list2 = [45678]
common_elements = {num for num in list1 if num in list2}
print(common_elements)  # 输出: {4, 5}

6. 实战案例

假设我们有一个包含多个子列表的列表,每个子列表代表一个学生的成绩记录。我们想找出所有学生的最高分,并统计每个最高分出现的次数。

# 学生成绩记录
grades = [
    [859092],
    [788895],
    [929889],
    [889295],
    [909598]
]

# 使用列表推导式找到每个学生的最高分
highest_grades = [max(student) for student in grades]
print(highest_grades)  # 输出: [92, 95, 98, 95, 98]

# 使用集合推导式找到所有不同的最高分
unique_highest_grades = {grade for grade in highest_grades}
print(unique_highest_grades)  # 输出: {92, 95, 98}

# 统计每个最高分出现的次数
from collections import Counter
grade_counts = Counter(highest_grades)
print(grade_counts)  # 输出: Counter({95: 2, 98: 2, 92: 1})

总结

本文详细介绍了 Python 中的列表推导式和集合推导式,包括它们的基本概念、语法、应用场景以及它们之间的异同点。通过具体的示例和实战案例,展示了如何在实际开发中灵活运用这两种强大的工具。

好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指点赞、转发、在看吧!

付费合集推荐

Python编程基础

Python办公自动化-Excel

微信公众号批量上传发布系统

文末福利

公众号消息窗口回复“编程资料”,获取Python编程、人工智能、爬虫等100+本精品电子书。

推广服务

公众号推广代运营代发服务

关注我👇,精彩不再错过


手把手PythonAI编程
分享与人工智能和python编程语言相关的笔记和项目经历。
 最新文章