Это неэффективный способ захватить первый отфильтрованный элемент из результирующего объекта списка.
[f[0:-2] for f in List if f[-1] == i]
- это список, создающий новый объект списка. Затем этот объект индексируется [0]
, чтобы получить первое значение.
Вы можете переписать его:
tmp = [f[0:-2] for f in List if f[-1] == i]
rec = tmp[0]
del tmp
и получить тот же результат.
Эффективный метод был бы не использовать next()
с generator expression:
rec = next(f[:-2] for f in List if f[-1] == i)
Это только перебирает List
до первого f
установлено, что соответствует тесту, вместо того, чтобы сначала изготавливают всех таких матчей, то снова отмените объект списка.
Спасибо, что было очень хорошо объяснено. Я должен был упомянуть, что это часть цикла for, который выполняет итерацию по другому списку, поэтому, вероятно, более эффективен, чем я описал. Еще раз спасибо. – user2883489