目录
Python中的推导式是一种简洁、高效的构造列表、集合、字典和生成器表达式的方法。它允许你在一行代码中以简洁的方式表达循环和条件逻辑。推导式通常比传统的循环代码更加简洁和易读。
它通常分为以下几种:列表推导式,元组推导式,字典推导式,集合推导式。
1.列表推导式
列表推导式的组成分为三部分:第一部分是表达式语句,第二部分是for循环,第三部分是筛选条件(可有可无,根据情况选择是否写条件)。
import random
# 列表推导式
l1 = [random.randint(0, 10) * i for i in range(10) if i == 1 or i == 5]
print(l1) # [1, 10]
# 可以使用str将i转换为字符串格式
options = [str(i) for i in range(5)]
print(options) # ['0', '1', '2', '3', '4']
对于列表l1,如果没有if后的条件,是将i取0-9时前方表达式的值都放入列表,而加上if的限制后,则变成当i的值取1和5时才将随机到的数放入l1中。
对于options列表则是将0-4都放入option列表,并将其通过str转换为字符串,这是因为我们在写一些简单的系统的时候,用户输入的数字实际为字符串类型,使用这样的推导式可以有效避免因未对用户输入进行int转化而导致的报错。
2.元组推导式
元组推导式的组成分为三部分,第一部分是表达式语句,第二部分是for循环,第三部分是筛选条件(可有可无,根据情况选择是否写条件),与列表相同。
# Iterable(迭代器) Generator(生成器:是特殊的迭代器)
# 元组推导式: 得到一个生成器, 可以通过遍历获取生成器内容
g0 = (i ** 2 for i in range(10) if i % 2)
print(g0) # <generator object <genexpr> at 0x00000185533AFED0>
for e in g0:
print(e) # 1, 9, 25, 49, 81
元组推导式的返回结果不是具体的元组,而是一个生成器,但是我们可以通过遍历来获取到生成器内的元素。
3.字典推导式
字典推导式的组成分为三部分:第一部分是关于键和值的表达式,第二部分是for循环,第三部分是筛选条件(可有可无,根据情况选择是否写条件)。
# 字典推导式
# 第一部分是关于键和值格式的表达式
# 第二部分是循环
# 第三部分是条件
d0 = {f"key{i}": i ** 2 for i in range(10) if i % 2 == 0}
print(d0) # {'key0': 0, 'key2': 4, 'key4': 16, 'key6': 36, 'key8': 64}
4.集合推导式
集合推导式的组成分为三部分:第一部分是元素,第二部分是for循环,第三部分是筛选条件(可有可无,根据情况选择是否写条件)。
# 集合推导式
# 第一部分是元素
# 第二部分是循环
# 第三部分是条件
s0 = {i for i in range(10) if i % 3 == 0}
print(s0) # {0, 9, 3, 6}
总之,使用推导式可以显著提高 Python 代码的质量、可读性和性能。在编写 Python 代码时,应该优先考虑使用推导式来简化代码逻辑和降低复杂性。