gpt4 book ai didi

python - 如何在不停止递归的情况下返回递归函数中的值?

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:36 25 4
gpt4 key购买 nike

我有一个结构,在列表中包含 x 个列表,每个列表包含 x 个元组。我事先不知道有多少嵌套列表,或者每个列表中有多少元组。

我想用所有元组制作字典,因为我不知道列表的深度,所以我想使用递归。我做的是

def tupleToDict(listOfList, dictList):
itemDict = getItems(list) # a function that makes a dictionary out of all the tuples in list
dictList.append(itemDict)
for nestedList in listOfList:
getAllNestedItems(nestedList, dictList)

return dictList

这行得通,但最后我得到了一个巨大的列表。我宁愿在每一轮递归时返回 itemDict。但是,我不知道如何(如果可能的话)在不停止递归的情况下返回一个值。

最佳答案

您正在寻找 yield :

def tupleToDict(listOfList):
yield getItems(listofList)
for nestedList in listOfList:
for el in getAllNestedItems(nestedList):
yield el

在 Python 3.3+ 中,您可以将最后两行替换为 yield from .

您可能希望重写您的函数以使其迭代:

def tupleToDict(listOfList):
q = [listOfList]
while q:
l = q.pop()
yield getItems(l)
for nestedList in listOfList:
q += getAllNestedItems(nestedList)

关于python - 如何在不停止递归的情况下返回递归函数中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9718407/

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