n项的组合数
Number of combinations of n terms
是否有代数公式可以告诉我 n
项的不同组合?
如果我有:
{0: ['Hello!']}
{1: ['Welcome']}
{2: ['to']}
所有的组合都是:
['Hello!', 'Welcome', 'to'],
['Hello!', 'to', 'Welcome'],
['Welcome', 'Hello!', 'to'],
['Welcome', 'to', 'Hello!'],
['to', 'Hello!', 'Welcome'],
['to', 'Welcome', 'Hello!'],
但是描述这个的公式是什么?然后我会使用公式来编写我的程序并根据我可用的单词创建所有可能的三元组。我看过这个 link 但还没有想出答案:
https://www.mathsisfun.com/combinatorics/combinations-permutations.html
您描述的是 n 个对象的排列数。有n! = 1 × 2 × ... × n(也称为 n 阶乘)这样的排列。
您需要 n
项的 排列 ,itertools
有一个排列方法。您可以按如下方式使用它:
import itertools
lst = ['A', 'B', 'C', 'D']
z = itertools.permutations(lst, len(lst))
print(list(z))
如果您想了解更多:https://docs.python.org/3/library/itertools.html#itertools.permutations
import itertools
def permutations(iterable, r=None):
pool = tuple(iterable)
n = len(pool)
r = n if r is None else r
for indices in itertools.product(range(n), repeat=r):
if len(set(indices)) == r:
yield tuple(pool[i] for i in indices)
lst = ['A', 'B', 'C', 'D']
z = permutations(lst, len(last))
print(list(z))
是否有代数公式可以告诉我 n
项的不同组合?
如果我有:
{0: ['Hello!']}
{1: ['Welcome']}
{2: ['to']}
所有的组合都是:
['Hello!', 'Welcome', 'to'],
['Hello!', 'to', 'Welcome'],
['Welcome', 'Hello!', 'to'],
['Welcome', 'to', 'Hello!'],
['to', 'Hello!', 'Welcome'],
['to', 'Welcome', 'Hello!'],
但是描述这个的公式是什么?然后我会使用公式来编写我的程序并根据我可用的单词创建所有可能的三元组。我看过这个 link 但还没有想出答案:
https://www.mathsisfun.com/combinatorics/combinations-permutations.html
您描述的是 n 个对象的排列数。有n! = 1 × 2 × ... × n(也称为 n 阶乘)这样的排列。
您需要 n
项的 排列 ,itertools
有一个排列方法。您可以按如下方式使用它:
import itertools
lst = ['A', 'B', 'C', 'D']
z = itertools.permutations(lst, len(lst))
print(list(z))
如果您想了解更多:https://docs.python.org/3/library/itertools.html#itertools.permutations
import itertools
def permutations(iterable, r=None):
pool = tuple(iterable)
n = len(pool)
r = n if r is None else r
for indices in itertools.product(range(n), repeat=r):
if len(set(indices)) == r:
yield tuple(pool[i] for i in indices)
lst = ['A', 'B', 'C', 'D']
z = permutations(lst, len(last))
print(list(z))