2013-11-15 36 views
-3
list = [1,2,3,4] 

我想獲得下面的結果並將它們存儲在csv文件中。 (總共6行)如何配對python列表中的值

1,2 
1,3 
1,4 
2,3 
2,4 
3,4 

是否有這樣的功能,或者我該如何完成並將其存儲在csv文件中?

回答

7

itertools是你的朋友?

http://docs.python.org/2/library/itertools.html

>>> import itertools 
>>> x = [1, 2, 3, 4] 
>>> list(itertools.combinations(x, 2)) 
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)] 
+0

OP:使用''\ n'.join(','。join(map(str,v))for v in itertools.combinations(x,2))'獲得所需的輸出。 –

1

使用itertools.combinations。它在Python 2.6+中內置。

import itertools 

pairs = itertools.combinations(list, 2) 
1

一種選擇是使用itertools.permutations和列表理解:

>>> [(x, y) for x, y in itertools.permutations(mylist, 2) if x < y] 
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)] 

條件x < y確保你只得到了其中的排列是xy低。

更好的選擇是使用itertools.combinations(mylist, 2)

+0

itertools.combinations產生所需結果時爲什麼要麻煩? – FogleBird

+0

那麼爲什麼不使用「組合」呢? –

+0

是的,那實際上更好。 –

1

這是很簡單的做自己:

l=[1,2,3,4] 
for i in range(0,len(l)): 
    for j in range (i+1,len(l)): 
     print l[i],l[j] 

但使用itertools解決方案可以被推廣更加容易。