Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何生成用于构建列表的递归函数_Python_List_Recursion - Fatal编程技术网

Python 如何生成用于构建列表的递归函数

Python 如何生成用于构建列表的递归函数,python,list,recursion,Python,List,Recursion,获取递归函数以构建返回列表的好方法是什么?假设我有一个如下函数,用于生成所有子目录中的文件和目录列表: def print_directory_listing(directory = "."): for file_structure in os.listdir(directory): file_structure_path = os.path.join(directory, file_st

获取递归函数以构建返回列表的好方法是什么?假设我有一个如下函数,用于生成所有子目录中的文件和目录列表:

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
的详细信息;我想问一个一般性的问题,即用什么样的python方法来获得一个递归函数来构建并返回一个列表。

感谢您的评论,我想我已经理解了您问题的真正目的。如果你看一下下面的代码,你会发现你正在寻找的递归,你会看到如何“保存child的变量”


感谢你的评论,我想我已经理解了你问题的真正目的。如果你看一下下面的代码,你会发现你正在寻找的递归,你会看到如何“保存child的变量”


为什么不使用
os.walk()
这正是为了达到这个目的?@Kasramvd为什么不回答而不是评论,因为这肯定是一个答案?@Loïc因为这个问题是重复的。@Kasramvd我的问题不是关于创建目录列表;它是关于如何获得一个递归函数来构建一个列表并返回该列表。我提到的目录列表完全是偶然的。这不是一个演示任务的好例子,你最好通过提供一个。作为提示,您还可以看到
os.walk()
函数的源代码,该函数使用递归方法,为什么您不使用正是为了这个目的而使用的
os.walk()
,因为这肯定是一个答案?@Loïc,因为这个问题是重复的。@Kasramvd我的问题不是关于创建目录列表;它是关于如何获得一个递归函数来构建一个列表并返回该列表。我提到的目录列表完全是偶然的。这不是一个演示任务的好例子,你最好通过提供一个。作为提示,您还可以看到使用递归方法的
os.walk()
函数的源代码。谢谢您的解决方案。我的问题不是特别关于创建目录列表;这是关于如何获得一个递归函数来构建一个列表并返回该列表。我有一个示例代码供您使用,我无法为这个问题添加答案。关门了。你会问一个新问题吗?@d3pd我刚刚更新了我的答案谢谢你的解决方案。我的问题不是特别关于创建目录列表;这是关于如何获得一个递归函数来构建一个列表并返回该列表。我有一个示例代码供您使用,我无法为这个问题添加答案。关门了。你会问一个新问题吗?@d3pd我刚刚更新了我的答案
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