如何创建一个构建列表的递归函数

时间:2015-11-22 14:49:30

标签: python list recursion helper-functions

获取递归函数构建返回列表的好方法是什么?让我们说我有一个像下面这样的函数来生成所有子目录中的文件和目录列表:

def print_directory_listing(directory = "."):                          
    for file_structure in os.listdir(directory):                
        file_structure_path = os.path.join(directory, file_structure)
        if os.path.isdir(file_structure_path):
            print_directory_listing(file_structure_path)
        else:
            print(file_structure_path)

我不是打印出所有内容,而是如何修改它以返回所有文件和目录的列表?例如,拥有一个函数附加文件的全局列表会不会很好?

请注意,我不是要求os.walk的详细信息;我想问一个关于Pythonic将如何获得递归函数来构建和返回列表的一般性问题。

1 个答案:

答案 0 :(得分:0)

感谢您的评论,我认为已经理解了您问题的真正目的。如果您查看以下代码,您将找到您正在寻找的递归,您将看到如何“保存子项的变量”。

import os

def print_directory_listing(directory = '.'):
    files_list=[]

    for file_structure in os.listdir(directory):                
        file_structure_path = os.path.join(directory, file_structure)
        if os.path.isdir(file_structure_path):
            files_list+=print_directory_listing(file_structure_path)
        else:
            files_list.append(file_structure_path)

    return files_list