编程语言
首页 > 编程语言> > Python,组合,无重复排列

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))

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

标签:optimization,combinations,itertools,combinatorics,python
来源: https://codeday.me/bug/20191028/1956014.html