Мне нужна функция, которая способна выполнять итерацию по коллекции, вызывая предоставленную функцию с элементом коллекции в качестве параметра и возвращая параметр или индекс при получении «True» из предоставленной функции.Python - функциональный "find"?
Он somethong так:
def find(f, seq, index_only=True, item_only=False):
"""Return first item in sequence where f(item) == True."""
index = 0
for item in seq:
if f(item):
if index_only:
return index
if item_only:
return item
return index, item
index+= 1
raise KeyError
Так мне интересно, есть ли что-нибудь подобное в стандартном наборе инструментов питона?
Фрагмент OP - это более прямой (хотя и более длинный) способ выражения требования; это может быть предписанным образом, в зависимости от ситуации. Из ответов, однако, приходит очень полезная информация: «в отношении циклов, когда есть сомнения, проконсультируйтесь/рассмотрите itertools». – mjv