列表推导式的嵌套使用
如何用列表推导式实现嵌套循环?请用例子说明多层列表推导式的写法。
回答
小字辈
嵌套列表推导式保持外层循环在前、内层循环在后的顺序。
matrix = [[1, 2], [3, 4], [5, 6]]
# 扁平化
flattened = [x for row in matrix for x in row]
# [1, 2, 3, 4, 5, 6]
# 嵌套循环 + 条件
pairs = [(x, y) for x in range(3) for y in range(3) if x != y]
# [(0,1),(0,2),(1,0),(1,2),(2,0),(2,1)]
# 等价于
pairs = []
for x in range(3):
for y in range(3):
if x != y:
pairs.append((x, y))
注意:超过两层嵌套会降低可读性,建议改用普通循环。