Python itertools排列如何包含重复字符

jkd*_*dba 12 python permutation python-itertools

可能重复:
集合python的幂集和笛卡尔积

使用Python Itertools.permutations()我希望接收和输出具有重复字符的排列.举个例子,我的下面的函数和它的当前输出.

def perm(n,i):
    b = 0
    while b < n:
        n= n -1
        from itertools import permutations as p
        file.write('\n'.join([''.join(item) for item in p(i,n)]))
perm(4,'0123')
Run Code Online (Sandbox Code Playgroud)

输出是:

012
013
021
023
031
032
102
103
120
123
130
132
201
203
210
213
230
231
301
302
310
312
320
321.....
Run Code Online (Sandbox Code Playgroud)

我如何获得112或222的输出?

根据我的理解,组合不是特定于排列的特定顺序.我正在寻找的是找到所有组合然后每个组合的每个排列.这可能吗?

Ned*_*der 28

你根本不想要排列.你想要笛卡尔积:

import itertools

def perm(n, seq):
    for p in itertools.product(seq, repeat=n):
        file.write("".join(p))
        file.write("\n")

perm(4, "0123")
Run Code Online (Sandbox Code Playgroud)


acj*_*jay 7

您似乎在寻找的是笛卡尔积,而不是置换,也是由itertools提供的.

您可以很好地熟悉排列,组合,替换组合和笛卡尔积之间的差异,以确定哪种方法最适合您的应用程序,但很有可能,您正在寻找其他选项.