2
У меня есть список, который содержит целый ряд вещей:Есть ли более простой способ получить первое появление чего-то?
lista = ['a', 'b', 'foo', 'c', 'd', 'e', 'bar']
Я хотел бы получить первый элемент в списке, который выполняет предикат, скажем len(item) > 2
. Есть ли более аккуратный способ сделать это, чем отключение itertools, а затем?
first = next(itertools.dropwhile(lambda x: len(x) <= 2, lista))
я использовал [item for item in lista if len(item)>2][0]
на первом, но это требует питона, чтобы генерировать весь список первым.
Обратите внимание, что следующая функция была добавлена в 2.6. Если вам нужна совместимость с 2.5 или 2.4, тогда используйте '(i для i в списке, если len (i)> 2) .next()' –
Всегда забывайте генераторы ... –