当然,这将生成每对两次,因为每个
for循环将遍历列表的每个项目。
您可以在这里使用一些itertools魔术来生成所有可能的组合:
import itertoolsfor a, b in itertools.combinations(mylist, 2): compare(a, b)
itertools.combinations
会在迭代中将每个元素与另一个元素配对,但只能配对一次。
您仍然可以使用基于索引的项目访问(与您以前使用的嵌套
for循环相同)来编写此代码:
for i in range(len(mylist)): for j in range(i + 1, len(mylist)): compare(mylist[i], mylist[j])
当然,这看起来可能不那么好用,但是有时它仍然是最简单,最易理解的解决方案,因此您不应回避解决此类问题。



