gpt4 book ai didi

python - Python的N个嵌套for循环

转载 作者:行者123 更新时间:2023-12-01 00:03:37 25 4
gpt4 key购买 nike

有没有像溯行函数那样具有动态循环次数的方法?letters 是一个字符数组 ['a','b','c','d'] 并且letterdict 是一个字典 {'a':['b','c'],'b':['a'],'c':['d'],'d':['b' ,'c','d']我的代码是 n=13:

for x in letters:
for k1 in letterdict[x]:
for k2 in letterdict[k1]:
for k3 in letterdict[k2]:
for k4 in letterdict[k3]:
for k5 in letterdict[k4]:
for k6 in letterdict[k5]:
for k7 in letterdict[k6]:
for k8 in letterdict[k7]:
for k9 in letterdict[k8]:
for k10 in letterdict[k9]:
for k11 in letterdict[k10]:
for k12 in letterdict[k11]:
for k13 in letterdict[k12]:
word=""
word=x+k1+k2+k3+k4+k5+k6+k7+k8+k9+k10+k11+k12+k13
print(word)

但我想要 n 个循环使用相同的代码像这样:

对于 n=3

for x in letters:
for k1 in letterdict[x]:
for k2 in letterdict[k1]:
for k3 in letterdict[k2]:
word=""
word=x+k1+k2+k3
print(word)

最佳答案

通常,当您发现自己需要无限多个嵌套循环时,您应该编写一个递归函数。这是生成器函数的实现:

def generate_strings(letters, transitions, k):
def helper(s):
if len(s) == k:
yield s
elif len(s) < k:
for letter in transitions[s[-1]]:
yield from helper(s + letter)
for letter in letters:
yield from helper(letter)

示例:请注意,您不必使用字符列表,因为字符串也是字符序列。

>>> letters = 'abcd'
>>> transitions = {'a': 'bc', 'b': 'a', 'c': 'd', 'd': 'bcd'}
>>> for s in generate_strings(letters, transitions, 4):
... print(s)
...
abab
abac
acdb
acdc
acdd
baba
bacd
cdba
cdcd
cddb
cddc
cddd
dbab
dbac
dcdb
dcdc
dcdd
ddba
ddcd
dddb
dddc
dddd

关于python - Python的N个嵌套for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60137493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com