Python 列表推导式语法
在 Python 中,我们可以使用 “推导式” 快速生成一个列表。这种方式叫 “列表推导式” 或 “列表生成式”。
列表推导式是 “very Python” 的循环方式,它不仅体现了 Python 简洁优美的思想,而且比普通的循环方式更加简洁高效。
语法:
列表名 = [表达式 for 变量 in 可迭代对象]说明:
在该语法中,前面的 “表达式” 一般需要用到后面的 “变量”,这是列表推导式非常重要的特点。
Python 可迭代对象
在编写 for 循环时,并不是所有对象都可以用于循环遍历,只有 “可迭代对象”(iterable)才行。其中,列表、元组、字符串和字典都是可迭代对象,而可迭代对象是 Python 中非常重要的概念。
Python 列表推导式示例
接下来,我们通过几个简单的例子来讲解 Python 列表推导式是如何使用的。
示例 1:快速生成数字列表
nums = [n * 2 for n in range(1, 6)]
print(nums)运行结果如下。
[2, 4, 6, 8, 10]分析:
使用列表推导式的方式,可以快速生成一个数字列表,比如偶数列表、前 100 个整数的列表。
示例 2:大小写转换
animals = ['ant', 'bee', 'cat', 'dog', 'ewe']
result = [animal.upper() for animal in animals]
print(result)运行结果如下。
['ANT', 'BEE', 'CAT', 'DOG', 'EWE']分析:
upper() 是字符串是一个方法,用于将字符串转换为纯大写。
示例 3:加上判断条件
nums = [3, 9, 1, 12, 50, 21]
result = [num for num in nums if num > 10]
print(result)运行结果如下。
[12, 50, 21]分析:
如果想要给列表推导式加上判断条件,需要把条件放在最后,不然会报错。
# 正确
result = [num for num in nums if num > 10]
# 错误
result = [if num > 10 num for num in nums]示例 4:加上 if-else 判断
nums = [3, 9, 1, 12, 50, 21]
# 如果大于 10 就保留原值,否则将其替换为 0
result = [num if num > 10 else 0 for num in nums]
print(result)运行结果如下。
[0, 0, 0, 12, 50, 21]分析:
如果我们需要同时使用 if 和 else,那么必须把条件判断放在 for 循环的前面,而不是后面。
Python 中的 “推导式” 语法
在 Python 中,除了列表有推导式语法之外,像字典、集合等都有推导式语法。另请参阅:
推导式语法可以让代码更加简洁,但在某些情况下,也会降低代码的可读性。因此在实际开发中,不要过度使用。
