Есть ли более аккуратный способ получить первое появление чего-либо? - PullRequest
2 голосов
/ 04 мая 2010

У меня есть список, который содержит несколько вещей:

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], но для этого нужно, чтобы Python сначала генерировал весь список.

1 Ответ

7 голосов
/ 04 мая 2010
>>> lista = ['a', 'b', 'foo', 'c', 'd', 'e', 'bar']
>>> next(i for i in lista if len(i) > 2)
'foo'
...