Python基本版–一行包含列表,“ for”和“ if”

马克·K

这是一个Python新手问题(多亏了将多个excel文件导入python熊猫并将它们连接成一个dataframe的帖子

脚本是:

import os

files = os.listdir('C:\\TEST')
files_pdf = [f for f in files if f[-3:] == 'pdf']
print files_pdf

它给出了文件夹中PDF文件的所有名称。

我试图从一个基本的角度来理解它。我猜上面最长的行是这样的:

files_ pdf = []
for f in files:
    if f[-3:] == ‘pdf’:
        files_ pdf.append(f)

问题是,有什么区别?“ f in file”中“ f for f”的原因或原理是什么?

[for f in files if f[-3:] == 'pdf']   #doesn't work
[f for f in files if f[-3:] == 'pdf'] #works

谢谢。

狮子座

这称为列表推导

例如,

nums = [1, 2, 3, 4, 5]
squares = [x**2 for x in nums]
# squares: [1, 4, 9, 16, 25]

第一部分(在之前for)是将被压入新列表的内容。

所以

[f for f in files if f[-3:] == 'pdf']

仅表示“使用所有f in files内容f[-3:] == 'pdf'以形成列表”

关于列表理解有一些非常有用的技巧。
例如,如果您要创建一个包含一些空列表以供以后使用的列表,则可以编写

multi_list = [[] for i in range(10)]   # correct
multi_list = [[]]*10                   # wrong!

这是因为[[]]*10将使用一个列表的相同引用,
但是[[] for i in range(10)]将创建10个独立列表。

有关更多信息,您应该检查列表推导

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何读取八度音阶上第一行包含字符串,第二行包含数字和符号的文本文件?

如何在python列表中打印上一行和下一行

如何在 Python 中打印一行中的列表索引和下一行中的列表元素?

删除包含模式和前一行的行

查找包含特定文本的第一行和最后一行

打印文件内容时不包含第一行和最后一行

在同一行中将变量和列表写入CSV

在一行中投射和添加列表

使用 for 和 if 在同一行生成过滤列表

遍历表行列表,直到一行包含特定字符串?

Python 在同一行上创建一个整数和浮点数列表

如何在 CSS 的同一行上对齐包含文本的 div 和包含图像的 div?

包含TextView的ListView和包含EditText的ListView不在同一行

嵌套列表中的单独列表,并绘制第一行和第二行值

将 Numpy 文件转换为 TFRecord,其中每行包含一个数字和一个可变长度列表

Python:exec()代码块和eval()最后一行

Python如何用一行导入和使用模块

Python:一行中的“打印”和“输入”

一行python中的多个“计算和赋值”操作?

Python Regex文字和时间在同一行

在python中读取和存储一行的特定部分

CSV的第一行和最后一行的Python Pandas DataFrame

在 Python 中删除数组的第一行和最后一行

python将拆分列表存储到同一行中的多个文件和项目中

仅打印在C中包含关键字的第一行和最后一行

Java,映射一个列表,并在一行中进行包含检查或遍历整个列表吗?

BASH - SED 在最后一行之前插入新行,包含制表符和变量

将一行转换为多个包含Google表格的行和列的固定数量

使用“ sed”删除包含某些内容的行和下一行