繁体   English   中英

了解紧凑的代码片段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM