繁体   English   中英

如何将此列表理解转换为for循环

[英]how can I turn this list comprehension into for loops

我在看itertools.product,在解释中是一个函数,用于解释函数有多么有效。 看起来所有的魔法都发生在这里,在一个循环中通过列表:结果= [x + [y]表示x中的结果为列表中的y]。 所以我决定尝试创建一个循环,以便我可以更容易地按照正在发生的事情。 我将示例函数修改为:

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

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

添加包含中间列表的临时列表。 这是因为列表推导完全执行然后重写result的值。

一个小代码可以演示如下

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

这将根据需要打印相同的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM