python中推导式的奥秘

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Python 中的推导式(comprehension)是一种构建列表(list)、集合(set)、字典(dict)或其他迭代器的高效简洁的方式。它允许你从一个迭代器快速生成一个新的迭代器,通过简洁的语法实现循环和条件判断。推导式主要分为列表推导式(list comprehension)、字典推导式(dictionary comprehension)、集合推导式(set comprehension)和生成器表达式(generator expression,虽然它不是一个完整的迭代器,但通常在讨论推导式时也会被提及)。


列表推导式(List Comprehension)

列表推导式提供了一种从其他列表创建列表的简洁方式。

# 示例:将列表中的每个数字乘以2  
numbers = [1, 2, 3, 4, 5]  
squared = [x*2 for x in numbers]  
print(squared)  # 输出: [2, 4, 6, 8, 10]  
# 添加条件判断  
even_squared = [x*2 for x in numbers if x % 2 == 0]  
print(even_squared)  # 输出: [4, 8, 10]

字典推导式(Dictionary Comprehension)

字典推导式用于从现有字典或其他可迭代对象创建新字典。

# 示例:将字典的键和值互换  
d = {'a': 1, 'b': 2, 'c': 3}  
d_inverted = {v: k for k, v in d.items()}  
print(d_inverted)  # 输出: {1: 'a', 2: 'b', 3: 'c'}  
# 使用条件判断  
d_filtered = {k: v for k, v in d.items() if v > 1}  
print(d_filtered)  # 输出: {'b': 2, 'c': 3}

集合推导式(Set Comprehension)

集合推导式用于从其他集合或可迭代对象创建新集合。集合是无序的,且不允许重复元素。

# 示例:从列表中获取所有偶数  
numbers = [1, 2, 3, 4, 5, 6]  
even_numbers = {x for x in numbers if x % 2 == 0}  
print(even_numbers)  # 输出可能是 {2, 4, 6},因为集合是无序的

生成器表达式(Generator Expression)

生成器表达式类似于列表推导式,但它返回一个生成器对象,而不是一次性生成整个列表。这在处理大量数据时非常有用,因为它可以节省内存。

# 示例:生成偶数  
numbers = [1, 2, 3, 4, 5, 6]  
even_numbers = (x for x in numbers if x % 2 == 0)  
# 使用生成器  
for num in even_numbers:  
    print(num)  # 输出: 2 4 6

总结

推导式是 Python 中的一个非常强大且常用的特性,可以极大地简化代码并提高代码的可读性。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值