【发布时间】:2016-09-18 04:08:25
【问题描述】:
我必须在列表中生成所有 2 对项目组合。现在,我知道有两种方法可以做到这一点:嵌套的 for 循环和 python 的内置 itertools:
from itertools import combinations
foo = [1, 2, 3, 4]
for i in xrange(len(foo)):
for j in xrange(i + 1, len(foo)):
print foo[i], foo[j]
for c in combinations(foo, 2):
print c
我的问题是:使用其中一个有什么显着优势吗?
【问题讨论】:
-
第二个看起来更好,可能更快。您可以轻松编写程序来测试速度,只需设置
foo = range(1000)即可很好地测试。 -
print foo[i], foo[j]实际上并没有和print c做同样的事情。第一个版本打印foo[i]和foo[j]以空格分隔,而第二个版本打印一个元组。 -
@user2357112,我在考虑这个;我已将其更改为在列表中保存一个元组,并在两者上运行 timeit。
标签: python performance loops itertools