0

Python では、ネストされた for ループまたはリスト内包表記よりも、k 要素セットから n 要素の組み合わせのセットを取得するためのより良い方法はありますか?

たとえば、セット [1,2,3,4,5,6] から [(1,2),(1,3),(1,4),(1,5),( 1,6)、(2,3)、(2,4)、(2,5)、(2,6)、(3,4)、(3,5)、(3,6)、(4、 5)、(4,6)、(5,6)]。それを作るよりも良いことはありますか

nums=[1,2,3,4,5,6]
doubles=[]
for a in nums:
    for b in nums[a+1:]
        doubles.append((a,b))

? 最終的に得られるリストの要素がセット、タプル、またはリストであっても問題ありません。これを行うためのより簡単な方法があるべきだと思います。

4

3 に答える 3

4

使用できますitertools.combinations

>>> from itertools import combinations
>>> nums = [1,2,3,4,5,6]
>>> list(combinations(nums, 2))
[(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 3), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), (4, 5), (4, 6), (5, 6)]
于 2013-06-11T20:24:04.717 に答える
1

itertools モジュールを使用できます

import itertools
alphabet = ['1','2','3','4','5','6']
combos = list(itertools.combinations(alphabet, 2))
print combos
于 2013-06-11T20:28:11.500 に答える