Python 列表推导式

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 中,除了列表有推导式语法之外,像字典、集合等都有推导式语法。另请参阅:

Python 字典推导式

Python 集合推导式

推导式语法可以让代码更加简洁,但在某些情况下,也会降低代码的可读性。因此在实际开发中,不要过度使用。

上一篇: Python 列表排序

下一篇: Python 元组

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号