我非常擅长Python,但是这个问题真的让我烦恼,我需要帮助。
鉴于以下内容:
alphabet_string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
letters = [x for x in alphabet_string]
max_replacements = 3
我希望找到所有可能的替代品max_replacements
。
因此,例如,第一次迭代会将其添加到列表中:
AACDEFGHIJKLMNOPQRSTUVWXYZ
B
被A
替换的地方 - 因为它是letters
列表中的第一个元素。第二次迭代将执行此操作:
ABADEFGHIJKLMNOPQRSTUVWXYZ
依此类推。通过letters
完成对alphabet_string
的完整迭代后,替换将开始如下:
AAADEFGHIJKLMNOPQRSTUVWXYZ
然后:
ABAAEFGHIJKLMNOPQRSTUVWXYZ
等等。
它可能非常简单,但我迷失了。任何帮助都会很棒。
答案 0 :(得分:0)
我递归地做。我在输出中获得了正确数量的项目,我手动检查它是否有更简单的问题。感谢您提出这个问题,这真的很有趣!
alphabet_string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
max_replacements = 3
def find_neighbours(word, alphabet, n):
if n < 0:
raise ValueError("negative n!")
if n == 0:
return [word]
out = []
for l in alphabet:
k = n if l == word[0] else n-1
res = find_neighbours(word[1:], alphabet, k)
out += [l + r for r in res]
return out
out = find_neighbours(alphabet_string, alphabet_string, max_replacements)