我继承了一些Python脚本,我正在努力理解它们。我是一名初级Python程序员,但在其他几种脚本语言方面经验丰富。
以下Python代码段生成一个文件列表,然后在稍后的代码块中使用。我想知道它是如何做到的。我知道os.path.isfile
是对文件类型的测试,os.path.join
将参数组合到文件路径字符串中。有人能帮我理解剩下的吗?
flist = [file for file in whls if os.path.isfile(os.path.join(whdir, i, file))]
答案 0 :(得分:1)
whls
是某种可迭代的。
对于whls
中的每个元素,它会检查os.path.join(whdir, i, that_element)
是否为文件。
(Windows上的os.path.join("C:","users","adsmith")
为r"C:\users\adsmith"
)
如果是,则将其包含在该列表中。
正如@jonsharpe在评论中所说,这是list comprehension的一个例子,非常值得您掌握。
答案 1 :(得分:0)
列表理解意味着python将迭代whls
的每个成员(这可能是一个元组/列表?),并且对于每个项目,它将测试os.path.join(whdir, i, file)
是否是文件(如反对目录等)。它将返回一个列表,其中仅包含通过此条件检查的whls中的元素。
答案 2 :(得分:0)
此列表理解等效于以下循环:
flist = []
for file in whls:
if os.path.isfile(os.path.join(whdir, i, file)):
flist.append(file)
列表理解更紧凑。性能方面,它们是相似的,列表理解速度要快一些,因为它不会加载append()方法。