python - Itertools代替嵌套循环

标签 python python-3.x loops python-itertools

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/

相关文章:

python - 从交互式 map 中抓取数据

c - C 中 do-while 循环的意外行为?

c++ for循环中的简单求和

php - 围绕 php 循环包装 div

python - 如何在Python中输入Googol?

python - 打印类实例列表的随机实例但得到 RecursionError python3

c++ - Python OpenCv 构建未在命令行中检测到 visual studio 2019

python-3.x - 如何使用 on_enter 事件在 kivy 上更改屏幕?

python-3.x - 从 Pandas 列中删除小数(字符串类型)

python - 使用OpenCV与Matlab评估校准结果