简单的列表理解

atp*_*atp 3 python list-comprehension

我想要一个文件字典:

files = [files for (subdir, dirs, files) in os.walk(rootdir)]
Run Code Online (Sandbox Code Playgroud)

但我知道,

files = [['filename1', 'filename2']] 
Run Code Online (Sandbox Code Playgroud)

当我想要的时候

files = ['filename1', 'filename2']
Run Code Online (Sandbox Code Playgroud)

如何防止循环通过该元组?谢谢!

Joh*_*ica 7

这两项工作:

[f for (subdir, dirs, files) in os.walk(rootdir) for f in files]

sum([files for (subdir, dirs, files) in os.walk(rootdir)], [])
Run Code Online (Sandbox Code Playgroud)

样本输出:

$ find /tmp/test
/tmp/test
/tmp/test/subdir1
/tmp/test/subdir1/file1
/tmp/test/subdir2
/tmp/test/subdir2/file2
$ python
>>> import os
>>> rootdir = "/tmp/test"
>>> [f for (subdir, dirs, files) in os.walk(rootdir) for f in files]
['file1', 'file2']
>>> sum([files for (subdir, dirs, files) in os.walk(rootdir)], [])
['file1', 'file2']
Run Code Online (Sandbox Code Playgroud)