python - 递归函数后获取数据列表

标签 python recursion

我需要使用递归遍历数据库并在最后获得结果列表。函数工作正常(如果打印 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/

相关文章:

python - 将 numpy int 数组转换为 bool 数组

javascript - 使用递归函数进行对象比较

file - 使用批处理文件递归查找和删除文件夹

python - 有什么更好的方法可以在 Python 中从 Active Directory 域获取用户/组信息?

python - 使用 % 和转义序列的字符串格式化之间的奇怪交互。 Python

python - ParDo 中的分区和多个输出之间的区别?

python - 为什么在 Scheme 和 Python 中实现的递归方程的返回值不同?

python - 如何递归地编写嵌套 for 循环?

c++ - 函数内部的递归函数c++

python - 将稀疏 scipy 矩阵切片以每 10 行和 10 列进行子采​​样