list_a = []
for color in [True,False]:
for piece in range(1,7):
list_a = list_a + function(piece,color)
这里的function(piece,color)
返回一个列表,我想将其加入并最终返回长列表,这里可以使用itertools.chain
吗?因为我认为它可能会更快。我仅显示一个示例,但在我的实际代码中,循环运行了大约 100,000 次,这就是为什么我正在寻找更快的方法。
最佳答案
我将回答你应该问的问题;-)
这个:
list_a = list_a + function(piece,color)
所花费的时间是执行次数的二次方。每次,都会创建一个全新的列表对象,复制整个旧的 list_a
和新列表。
所以如果执行了很多次,你可以通过将其更改为这样来获得巨大的改进:
list_a.extend(function(piece,color))
然后 list_a
尽可能“就地”扩展;在幕后,它可能需要不时地复制到更大的内存区域,但总的来说,摊销时间与其执行次数成线性关系。
关于python - Itertools代替嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43332691/