这是一个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] 删除。
我来说两句