我需要使用递归遍历数据库并在最后获得结果列表。函数工作正常(如果打印 unrem)但我无法返回结果列表。
def find_locks(item, ids):
if item.video_id:
#print (item.video_id, ids)
return (item.video_id, ids)
for i in CatalogItem.objects.filter(parent=item):
if i.is_lock:
find_locks(i, ids.append(i.id))
else:
find_locks(i, ids)
如何获取列表结果?
最佳答案
我会使用递归生成器而不是构建列表:
def find_locks(item, ids):
if item.video_id:
yield (item.video_id, ids)
for i in CatalogItem.objects.filter(parent=item):
nxt = ids + [i.id] if i.is_lock else ids
for x in find_locks(i, nxt):
yield x
在 python 3.3 中,您可以在最后一部分使用 yield from
。
关于python - 递归函数后获取数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118698/