Itertools而不是嵌套循环

Vaj*_*ala 1 python loops python-itertools python-3.x

list_a = [] 
for color in [True,False]:
    for piece in range(1,7):
        list_a = list_a + function(piece,color)
Run Code Online (Sandbox Code Playgroud)

这里function(piece,color)返回一个列表,我想加入并最终返回长列表,可以itertools.chain在这里使用吗?因为我觉得它可能会更快.我只显示一个示例,但在我的实际代码中,循环运行大约100,000次,这就是为什么我在寻找更快的方法.

Tim*_*ers 5

我打算回答你应该问的问题;-)

这个:

list_a = list_a + function(piece,color)
Run Code Online (Sandbox Code Playgroud)

在执行次数上花费时间二次.每次创建一个全新的列表对象,复制整个旧list_a列表和新列表.

因此,如果它被执行多次,您可以通过将其更改为此来获得巨大的改进:

list_a.extend(function(piece,color))
Run Code Online (Sandbox Code Playgroud)

然后list_a尽可能地"扩展"到位; 在封面下,它可能需要不时地复制到更大的存储区域,但总体而言,分摊的时间在其执行的次数上是线性的.