如何在不制作产品的情况下进行嵌套列表理解?

cul*_*rón 2 python list-comprehension

在Python中,我想列出一组目录中的所有文件.我想得到的最好的是一个列表.但最多我设法制作了一个嵌套列表:

pics = os.path.expanduser('~/Pictures')
all_pics = [(d, os.listdir(d)) for d in os.listdir(pics)]
Run Code Online (Sandbox Code Playgroud)

结果:

[('folder1', ['file1', 'file2', ...]), ('folder2', ['file1', ...]), ...]
Run Code Online (Sandbox Code Playgroud)

我想要的是:

[('folder1' 'file1'), ('folder1', 'file2'), ..., ('folder2', 'file1'), ...]
Run Code Online (Sandbox Code Playgroud)

我想得到的是一个简单的普通列表,无论是什么(可以是元组),只是为了它没有嵌套的东西,我在解析它的代码中不需要嵌套循环.

如何使用列表推导来完成此操作?这样做给了我2套(目录名和文件名)的产品,这是错误的:

[(d, f) for f in os.listdir(os.path.join(pics, d)) for d in os.listdir(pics)]
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 5

你得到了for循环的顺序错误.它应该是

all_pics = [(d, f)
            for d in os.listdir(pics)
            for f in os.listdir(os.path.join(pics, d))]
Run Code Online (Sandbox Code Playgroud)

最外面的循环,最里面的循环最后.

我不知道为什么你没有得到NameErrord.