【发布时间】:2018-11-28 10:24:57
【问题描述】:
我有一个文件列表,我用它来创建:
files=[f for f in os.listdir(source) if f.endswith('.tif')]
print(len(files))
264
此列表包含 264 个文件,即
...,'NL-HnWFA_2244_157.tif', 'NL-HnWFA_2244_158-001.tif', 'NL-HnWFA_2244_158-002.tif', 'NL-HnWFA_2244_159.tif', ...
我想从这个文件列表中减去库存(“157”部分),方法是:
inventories = []
for file in files:
inventories.append(file.split('_')[2].split('-')[0].split('.')[0])
print(len(inventories))
264
那么我的列表中有 264 个项目
但是,如果我发出命令:
inventories = {fn.split('_')[2].split('-')[0].split('.')[0] for fn in files}
print(len(inventories))
263
双精度值已被省略,只有 263 项。
为什么在第二个语句中省略了双精度值?
我还能(以某种方式)在第一个语句中获得双精度值吗?
【问题讨论】:
-
在第二个语句中,您通过将语句括在 {} 中来创建一个集合对象。使用 [] 来获取列表。
标签: python list for-loop double