我需要一个函数,它能够迭代集合,调用一个提供的函数,将集合的元素作为参数,并在从提供的函数接收到“True”时返回参数或它的索引。在
是这样的:
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
所以我想知道在standartpython工具集中是否有类似的东西?在
您可以使用} docs 的配方部分中的
itertools.dropwhile
跳过提供的函数返回False
的项,然后获取其余项中的第一项(如果有的话)。如果您需要索引而不是项,请合并^{enumerate
。在要反转由提供的函数返回的真值,请使用
lambda
(lambda x: not pred (x)
,其中pred
是提供的函数)或命名包装:示例:
^{pr2}$如果找不到匹配的项,这将抛出
StopIteration
;将它包装在自己的函数中以引发您选择的异常。在我不认为有任何这样的函数具有如此精确的语义,不管怎样,你的函数很短,足够好,你可以很容易地改进它以备以后使用,所以请使用它。在
因为简单总比复杂好。在
尝试itertools,例如ifilter。在
相关问题 更多 >
编程相关推荐