Python,组合,无重复排列

Python.我有两个清单,长度相同.这个想法是建立配对的数据(用于回归分析).我想出了循环,它看起来像这样.

a=(1,3,5,7)   #first list
b=(2,4,6,10)  #second list
w=zip(a,b)    #paired values from both lists

i=0
j=0
for each in w:
    x= w[i]
    for that in xrange(i,len(w)-1):
        i+=1
        print x, w[i]
    j+=1
    i=j

输出结果与我预期的一样-第一对与第二对,第三对..依此类推,然后第二对与第三对,第四对..依此类推(跳过第二对和第一对之间的组合,因为它有点相同作为第一对和第二对的组合…)

(1, 2) (3, 4)
(1, 2) (5, 6)
(1, 2) (7, 10)
(3, 4) (5, 6)
(3, 4) (7, 10)
(5, 6) (7, 10) [..] and so on as I was expecting.

问题是-是否还有其他更短,更优化的方法来重写此代码(也许使用itertools)?

解决方法:

是:itertools.combinations

print list(itertools.combinations(w, 2))

您在问题中提到了这一点-我不确定为什么在询问*之前为什么不查看文档.

上一篇:javascript-一个模块的Dojo构建失败:OPTIMIZER FAILED:InternalError:之后缺少名称.运算符


下一篇:如何处理从一个客户端到一个PHP脚本的多个并行请求