Stuck:我自己产生排列的方法

时间:2017-02-04 08:26:40

标签: python permutation

我正在尝试编写自己的代码来生成由数字表示的项目的排列。假设有4个项目可以用0,1,2,3

表示

我已经看过itertools产品的代码。那段代码非常整洁。我的编码方式是使用二进制或三进制,...我的代码仅适用于小于10的位。此代码的一部分使用list(s)分割str。基数11的120号是1010,分裂' 1010'产量,1,0,1,0。为了使它正常工作,我需要拆分为10,10。有没有办法解决这个问题并仍然可以使用其余的代码? 或者,什么是递归版本?谢谢

aSet = 11
subSet = 2
s = ''
l = []
number = aSet**subSet

#finding all permutation, repeats allowed
for num in range(number):
    s = ''
    while num//aSet != 0:
        s = str(num%aSet) + s
        num = num//aSet
    else:
        s = str(num%aSet) + s 
    s = s.zfill(subSet)
    l.append(list(s))

1 个答案:

答案 0 :(得分:0)

实际上,使用字符串的问题是list(s)会将其分成单个字符。你根本不应该创建一个字符串,而是从一开始就使用 s 的列表:

aSet = 11
subSet = 2
l = []
number = aSet**subSet

#finding all permutation, repeats allowed
for num in range(number):
    s = []
    for _ in range(subSet):
        s.insert(0, num%aSet)
        num = num//aSet
    l.append(s)