Вы можете использовать метод фильтрации:
>>> lst = [1, 2, 3, 4, 5]
>>> filter(lambda x: x % 2 == 0, lst)
[2, 4]
или список понимание:
>>> lst = [1, 2, 3, 4, 5]
>>> [x for x in lst if x %2 == 0]
[2, 4]
EDIT: для находки (одного элемента), вы можете попробовать:
>>> (x for x in lst if x % 2 == 0).next()
2
Хотя это приведет к исключению, если ничего не соответствует, поэтому вы, вероятно, захотите обернуть его в try/catch. Скобки() делают это генераторным выражением, а не пониманием списка.
Лично я бы использовал обычный фильтр/понимание и взял первый элемент (если он есть).
Это вызывает исключение, если ничего не найдено
filter(lambda x: x % 2 == 0, lst)[0]
[x for x in lst if x %2 == 0][0]
Они возвращают пустые списки
filter(lambda x: x % 2 == 0, lst)[:1]
[x for x in lst if x %2 == 0][:1]
Спасибо! Это для поиска. Как насчет найти? – 2008-11-14 15:39:22