我怎样才能把这个列表推导式变成 for 循环

how can I turn this list comprehension into for loops

我正在查看 itertools.product,在解释中是一个函数,旨在解释该函数的工作原理。看起来所有的魔法都发生在这里,循环遍历列表:result = [x+[y] for x in result for y in list]。所以我决定尝试创建几个循环,这样我就可以更轻松地准确了解正在发生的事情。我将示例函数修改为:

lists = [[1, 2], [3, 4], [5, 6]]

result = [[]]
for l in lists:
    result = [x+[y] for x in result for y in l]

print result

结果如我所料。但是,当我试图将其分解为 for 循环时,我最终在修改结果时被循环结果绊倒了(我读到你不应该这样做)。我的尝试:

lists = [[1, 2], [3, 4], [5, 6]]

result = [[]]
for l in lists:
    for i in result:
        for y in l:
            result.append([i+[y]])

print result

在这种情况下,您将如何使用循环重新创建列表理解?

添加一个临时列表来保存您的中间列表。这是因为 list comprehension 完全执行然后重新写入 result 的值。

一小段代码可以演示如下

result = [[]]
for l in lists:
    tmp = []
    for x in result:
        for y in l:
            tmp.append(x+[y])
    result = tmp

这将打印所需的相同值。