#python #list #list-comprehension
#python #Список #понимание списка
Вопрос:
Я написал некоторый код с помощью справки и пытаюсь понять, что означает конкретная строка:
rec = [f[0:-2] for f in List if f[-1] == i][0]
Я понимаю, что это понимание списка, которое принимает значения в списке, минус последние 2, когда равно другой переменной i.
Что [0]
делать в этом случае?
Ответ №1:
Это неэффективный способ получить первый отфильтрованный элемент из результирующего объекта списка.
[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()
выражение генератора:
rec = next(f[:-2] for f in List if f[-1] == i)
Это повторяется только List
до тех f
пор, пока не будет найдено первое, соответствующее тесту, вместо того, чтобы сначала создавать все такие соответствия, а затем снова отбрасывать объект списка.
Комментарии:
1. Спасибо, что это было очень хорошо объяснено. Я должен был упомянуть, что это часть цикла for, который повторяет другой список, поэтому, вероятно, более эффективен, чем я описал. Еще раз спасибо.