我正在尝试在 和 范围内生成动态字符集的每个CHAR_LIST
组合。我在下面粘贴的代码有效,但我觉得它的效率非常低,我想尽可能快。lower
upper
例如,如果我想在“aab”和“zzz”之间生成一个只有小写字母字符的列表,它将输出:['aab', 'aac', 'aad', ..., 'zzy', 'zzz']
如果有什么我不清楚的地方,请发表评论,我会澄清的。谢谢!
我现在有什么工作。
def generate_list(lower, upper):
result = [lower]
while lower != upper:
if CHAR_LIST.index(lower[len(lower)-1:len(lower)]) + 1 < len(CHAR_LIST):
lower = lower[:len(lower)-1] + CHAR_LIST[CHAR_LIST.index(lower[len(lower)-1:len(lower)]) + 1]
else:
new_lower = ""
new_dig = 0
inc_next = True
for i in lower[::-1]:
if i == CHAR_LIST[len(CHAR_LIST)-1] and inc_next:
new_lower += CHAR_LIST[0]
new_dig += 1
else:
if inc_next:
inc_next = False
new_lower += CHAR_LIST[CHAR_LIST.index(i) + 1]
else:
new_lower += i
if new_dig == len(lower):
lower = str(CHAR_LIST[0])*int(len(lower)+1)
else:
lower = new_lower[::-1]
result.append(lower)
return result
编辑:我忘了补充,因为这是挑战的一部分,它还必须计算一个具有不同起点和终点长度的列表。例如,它还必须计算“a”和“zzz”之间的列表。抱歉修改晚了,感谢到目前为止的创造性答案:)