我有两段我认为是等价的代码;谁能解释我在列表理解方面缺少的理由?
以下代码在写入文件时仅生成最后一个子文件夹的内容:
for root, directories, files in os.walk(directory):
filenames = [os.path.join(root, filename) for filename in files]
然而,下面的代码正是我想要的(写入根目录及其子目录的所有内容):
allfiles = [os.path.join(root,f) for root,dirs,files in os.walk(directory) for f in files]
所以,它们看起来和我一模一样,但显然不是。有人可以指出我正确的方向吗?