我怎样才能把这个列表推导式变成 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
这将打印所需的相同值。
我正在查看 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
这将打印所需的相同值。