n个长度为l的n个项目的所有组合,其中n <l

时间:2019-02-23 16:19:36

标签: python combinations itertools

有很多示例,如果l <= n,如何获取长度为n的n个项的所有组合。但是如何获得长度为l的n个项(f.i.位数)的所有组合,例如n

n = 3 ([0,1,2])
l = 5
sequence to get:
00000
00001
00002
00010
...
22222

实现它不是问题,但是我想可以使用itertools来实现。我找不到方法。

2 个答案:

答案 0 :(得分:1)

从itertools文档中:

  

product(range(2),repeat = 3)-> 00000101010110100101110111

因此,对于您的情况,代码将是

itertools.product(range(3), repeat=5)

答案 1 :(得分:0)

由于此集合本质上只是一个三进制数系统,因此我们可以使用here中的三元函数

def ternary (n):
    if n == 0:
        return '0'
    nums = []
    while n:
        n, r = divmod(n, 3)
        nums.append(str(r))
    return ''.join(reversed(nums))

您可以将其视为数组,并通过如下所示的for循环对其进行迭代:

for i in range(3**5):
    print(ternary(i))