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)
你得到了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)
最外面的循环,最里面的循环最后.
我不知道为什么你没有得到NameError的d.