文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-11-28 14:05

关注

1. 列表推导式

(1) 基本概念

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

(2) 语法

new_list = [expression for item in iterable if condition]

(3) 示例

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

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

2. 集合推导式

(1) 基本概念

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

(2) 语法

new_set = {expression for item in iterable if condition}

(3) 示例

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

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

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

相同点:

不同点:

4. 应用场景

列表推导式:

集合推导式:

5. 实践示例

(1) 列表推导式示例

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

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

(2) 集合推导式示例

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

list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
common_elements = {num for num in list1 if num in list2}
print(common_elements)  # 输出: {4, 5}

6. 实战案例

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

# 学生成绩记录
grades = [
    [85, 90, 92],
    [78, 88, 95],
    [92, 98, 89],
    [88, 92, 95],
    [90, 95, 98]
]

# 使用列表推导式找到每个学生的最高分
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 中的列表推导式和集合推导式,包括它们的基本概念、语法、应用场景以及它们之间的异同点。通过具体的示例和实战案例,展示了如何在实际开发中灵活运用这两种强大的工具。

来源:手把手PythonAI编程内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯