没有替换的列表元素的每个组合
Every combination of list elements without replacement
在 Python 2.7 中,我想获取列表元素的 self-cartesian product,但没有与自身配对的元素。
In[]: foo = ['a', 'b', 'c']
In[]: [x for x in itertools.something(foo)]
Out[]:
[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]
目前我是:
[x for x in itertools.product(foo, repeat=2) if x[0] != x[1]]
但我怀疑对此有一个内置方法。这是什么?
注:itertools.combinations
wouldn't give me('a', 'b')
和('b', 'a')
您正在寻找 permutations 而不是组合。
from itertools import permutations
foo = ['a', 'b', 'c']
print(list(permutations(foo, 2)))
# Out: [('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]
在 Python 2.7 中,我想获取列表元素的 self-cartesian product,但没有与自身配对的元素。
In[]: foo = ['a', 'b', 'c']
In[]: [x for x in itertools.something(foo)]
Out[]:
[('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]
目前我是:
[x for x in itertools.product(foo, repeat=2) if x[0] != x[1]]
但我怀疑对此有一个内置方法。这是什么?
注:itertools.combinations
wouldn't give me('a', 'b')
和('b', 'a')
您正在寻找 permutations 而不是组合。
from itertools import permutations
foo = ['a', 'b', 'c']
print(list(permutations(foo, 2)))
# Out: [('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'c'), ('c', 'a'), ('c', 'b')]