2014-01-18 55 views
0

我有一個列表:lst=[(1, 'AAT'), (2, 'C'), (33, 'GCC'), (4, 'T'), (11, 'ATC'), (12, 'A')] 我想創建一個函數,如果我給它一個數字,它在列表中搜索lst然後它給了我相應的字符串。例如: :func(2) gives C。 我試試這個:功能在列表中搜索

def func(number): 
    for i in range(len(lst)): 
     if number==lst[i][0]:  """ lst[1][0]==2""" 
      return lst[i][i] 

它給:

IndexError: tuple index out of range 

我能做些什麼?

回答

1

您正在返回索引i的元組,它只有索引01。返回索引1來代替:

return lst[i][1] 

,或者使用next()和發電機表達式:

def func(number): 
    return next(t[1] for t in lst if t[0] == number) 
3

我想你想回去

lst[i][1] 

,而不是

lst[i][i] 

列表內的元組只是長度2的,所以當你的i指數>1,它會拋出一個錯誤。