你只要看一个清单就明白了,
for
循环的顺序与通常编写它们的顺序相同。所以
for a in range(4):
for b in a:
pass
会变成
[pass for a in range(4) for b in a]
有了这些知识,就很容易将任何循环重写为理解。你把末端放在前面然后把
对于
在它后面。因为你列了一个小单子
themen_final = []
我们从以下几点开始:
for path, subdir, files in os.walk(directory):
for file in files:
themen_final = [themen for themen in re.findall(r'[^\W\d_]+',path)[:4]]
再做一次同样的把戏:
[[themen for themen in re.findall(r'[^\W\d_]+', path)[:4]] for file in files for path, _, files in os.walk(directory)]
尽管我甚至希望你对
re.findall(r'[^\W\d_]+', path + file)
或者你可以不用
for file in files
是的。现在,对于每个文件,都会得到相同的结果。:)