Ответ 1
Вы можете использовать метод фильтра:
>>> 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]