该list.index(x)
函数返回值为的第一项列表中的索引x
。
是否有一个函数,list_func_index()
类似于index()
具有函数的函数f()
作为参数。该函数在列表的f()
每个元素上运行e
,直到 f(e)
返回True
。然后list_func_index()
返回的索引e
。
按代码:
>>> def list_func_index(lst, func):
for i in range(len(lst)):
if func(lst[i]):
return i
raise ValueError('no element making func True')
>>> l = [8,10,4,5,7]
>>> def is_odd(x): return x % 2 != 0
>>> list_func_index(l,is_odd)
3
有没有更优雅的解决方案?(以及该函数的更好的名称)
map(f, seq)
代替而是混淆性更大[f(x) for x in seq]
。换句话说,这是惯用法。与其他习语一样,要成为词汇表的一部分,它并不容易。