python学习——038如何将for循环改写成列表推导式
在 Python 里,列表推导式是一种能够简洁生成列表的表达式,可用于替换普通的 for 循环。下面是列表推导式的基本语法和常见应用场景。
基本语法
result = []
for item in iterable:
result.append(expression)
result = [expression for item in iterable]
常见场景
- 简单转换
普通循环:
squares = []
for x in range(10):
squares.append(x**2)
squares = [x**2 for x in range(10)]
- 带条件的过滤
普通循环:
even_numbers = []
for x in range(10):
if x % 2 == 0:
even_numbers.append(x)
even_numbers = [x for x in range(10) if x % 2 == 0]
- 嵌套循环
pairs = []
for x in [1, 2, 3]:
for y in [3, 1, 4]:
if x != y:
pairs.append((x, y))
pairs = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
最后:
- 列表推导式会直接生成整个列表,所以在处理大规模数据时,可能会占用较多内存。这种情况下,你可以考虑使用生成器表达式(把方括号换成圆括号)。
- 不要过度使用列表推导式。要是逻辑太过复杂,使用普通的 for 循环会让代码更具可读性。
- 列表推导式支持多层嵌套循环和多个条件判断,但要留意保持代码的清晰度。