2012-12-17 84 views
0

列表最近我只好找哪個列表的東西是我用:Python中找到一個值列表

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

我用的是指數在另一個類似的功能這個。 'if index1!= index2:haystack [index1] .extend(haystack.pop(index2))' – mbowden

回答

6

是的,沒有必要範圍內,對於初學者

for hay in haystack: 
    if needle in hay: 
    return hay 

如果你真的真的需要索引,使用enumerate

for x, hay in enumerate(haystack): 
    if needle in hay: 
    return x 
0

你可以做這樣的事情有1班輪:

def find_point(haystack,needle) 
    return next(elem for elem in haystack if needle in elem) 

我認爲應該工作(但它返回haystack元素)。如果針不在任何干草堆元素中,則會產生StopIteration

這聽起來並不像你實際需要的指數,但如果這樣做,使用enumerate(如提議由迪馬的魯德尼克優秀的答案):

def find_point(haystack,needle): 
    return next(idx for idx,elem in enumerate(haystack) if needle in elem) 
相關問題