【发布时间】:2011-07-13 04:23:19
【问题描述】:
假设我有一个列表,我想在不考虑顺序的情况下生成所有唯一元素对的列表。一种方法是:
mylist = ['W','X','Y','Z']
for i in xrange(len(mylist)):
for j in xrange(i+1,len(mylist)):
print mylist[i],mylist[j]
W X
W Y
W Z
X Y
X Z
Y Z
我想用迭代器来做这个,我想到了以下,即使它不简洁:
import copy
it1 = iter(mylist)
for a in it1:
it2 = copy.copy(it1)
for b in it2:
print a,b
但这甚至行不通。使用迭代器或 zip 等执行此操作的更 Pythonic 和更有效的方法是什么?
【问题讨论】:
-
今天第二次看到这个作业题了。
-
@Apalala,感谢您的反对,但我实际上想要我正在编码的东西的答案,并且在搜索时找不到任何其他类似的问题。
标签: python list iterator cartesian-product