2014-01-18 51 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,它会抛出一个错误。