首页 > 解决方案 > Python 列表推导与返回列表的函数

问题描述

我正在尝试为一系列值调用函数。该函数返回一个列表。目标是将所有返回的列表组合成一个列表。

这是一个返回列表的测试函数:

def f(i):
    return [chr(ord('a') + i), chr(ord('b') + i), chr(ord('c') + i)]

这是一个列表理解,它可以满足我在一些实验和大量 StackOverflow 阅读后提出的需要:

y = [a for x in (f(i) for i in range(5)) for a in x]

但是,当解决此问题的简单循环如下所示时,我不明白它为什么以及如何工作:

y = []
for x in (f(i) for i in range(5)):
    for a in x:
        y.append(a)

有人可以解释吗?

谢谢!

标签: pythonlist-comprehension

解决方案


根据 Bendik Knapstad 的回答,这可能是一个更好的说明:

[
    a # element added to the list
    for x in (f(i) for i in range(5)) # outer loop
        for a in x # inner loop that assigns to element to be added to the list
]

推荐阅读