Python在列表列表中查找值

时间:2012-12-17 12:10:44

标签: python list

最近我不得不找到哪个列表。我用过:

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(针)方法。 问题是:“有更好的方法吗?”

2 个答案:

答案 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)