列表推导式
Note
列表推导式(List Comprehension)是 Python 中一种非常简洁且强大的语法结构,用于从一个可迭代对象(如列表、元组、字符串、字典、集合等)快速生成新的列表。它将循环和条件语句等逻辑封装在一个方括号内,使代码更加简洁易读。
基本语法
列表推导式的基本语法结构如下:
[expression for item in iterable if condition]- expression:对每个元素进行的操作或表达式,可以是简单的变量,也可以是复杂的表达式。
- item:代表可迭代对象中的每个元素。
- iterable:可迭代对象,如列表、元组、字符串等。
- condition:(可选)过滤条件,用于筛选符合条件的元素。
示例
1. 基本用法
-
生成列表 1~10
output = [i for i in range(1, 11)] print(output)
-
生成列表 1~10 的平方
output = [i**2 for i in range(1, 11)] print(output)
-
生成 $y=2x+1 (x \in [0,10])$ 的坐标对
output = [(x,x*2+1) for x in range(1, 11)] print(output)
2. 条件筛选
-
生成列表 1~10 中偶数的平方
output = [i**2 for i in range(1, 11) if i % 2 == 0] print(output)
多层循环
-
生成一个包含两个列表中所有组合的列表:
list1 = [1, 2, 3, 4, 5] list2 = ['a', 'b', 'c'] output = [(x,y) for x in list1 for y in list2] print(output)
复杂表达式
list1 = ["ab", "cd", "ef"]
output = [num.upper() for num in list1]
print(output)优势
- 代码简洁:列表推导式将多行的循环和条件语句压缩成一行,使代码更加简洁易读。
- 执行效率高:列表推导式在内部进行了优化,通常比等效的循环代码执行速度更快。
- 表达力强:可以轻松实现复杂的列表生成逻辑,如多层循环、条件过滤等。
尽管使用列表推导式可以带来许多便利,但其也存在一些局限(或者说某些情况下不太适合使用):
Warning
- 可读性:虽然列表推导式很强大,但过度使用或写得过于复杂可能会降低代码的可读性。在某些情况下,使用普通的循环结构可能更合适.
- 内存消耗:列表推导式会一次性生成整个列表,如果生成的列表非常大,可能会消耗大量内存。在这种情况下,可以考虑使用生成器表达式(Generator Expression).
生成器表达式
生成器表达式与列表推导式类似,但生成的是一个生成器对象,而不是一个列表。生成器对象可以按需生成元素,从而节省内存。生成器表达式的语法如下:
(expression for item in iterable if condition)例如,生成一个包含 1 到 10 的平方的生成器
list = (i**2 for i in range(1,11))
for num in list:
print(num,end=" ")关注 BeijiuX 公众号,查看更多内容.
转载请注明出处
