[英]Understanding compact code snippet
我已经继承了一些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))]
whls
是某种迭代。
对于whls
每个元素,它都会检查os.path.join(whdir, i, that_element)
是否为文件。 (Windows上的os.path.join("C:","users","adsmith")
是r"C:\\users\\adsmith"
)
如果是这样,它将包括在该列表中。
正如@jonsharpe在评论中发布的那样,这是一个列表理解的示例,非常值得您花时间去掌握。
列表理解意味着python将遍历whls
每个成员(这可能是一个元组/列表?),对于每个项目,它将测试os.path.join(whdir, i, file)
是否是一个文件(如相对于目录等)。 它将返回仅包含通过此条件检查的whl中的元素的列表。
此列表理解等效于以下循环:
flist = []
for file in whls:
if os.path.isfile(os.path.join(whdir, i, file)):
flist.append(file)
列表理解更加紧凑。 在性能方面,它们是相似的,列表理解要快一些,因为它不会加载append()方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.