最近我不得不找到哪个列表。我用过:
def findPoint(haystack, needle): # haystack = [[1,2,3], [4,5]...,[6,7,8,9]]
for x in range(len(haystack)):
if needle in haystack[x]:
return x
raise Exception("needle: " + str(needle) + " not in haystack")
有一种haystack.index(针)方法。 问题是:“有更好的方法吗?”
答案 0 :(得分:6)
是的,对于初学者来说,不需要范围
for hay in haystack:
if needle in hay:
return hay
如果你真的需要索引,请使用enumerate
for x, hay in enumerate(haystack):
if needle in hay:
return x
答案 1 :(得分:0)
你可以用1-liner做这样的事情:
def find_point(haystack,needle)
return next(elem for elem in haystack if needle in elem)
我认为应该工作(但它返回haystack元素)。如果针不在任何大海捞针元素中,则会引发StopIteration
。
这听起来并不像你真的需要索引,但如果你这样做,请使用enumerate
(由Dima Rudnik的优秀答案提出):
def find_point(haystack,needle):
return next(idx for idx,elem in enumerate(haystack) if needle in elem)