У меня есть список файлов, которые я создаю:
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 элемента.
Почему двойные значения опущены во втором утверждении?
Могу ли я (как-то) получить двойные значения в первом операторе?