我正在尝试编写自己的代码来生成由数字表示的项目的排列。假设有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))
答案 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)