2014-12-06 28 views
-1

我是蟒蛇N00B和我试图在此工作的功能转换成一个列表理解:列表理解返回的错误,同时尝试/除非不

def sums_lists(list1, list2) 
    try: 
      sums_list = [] 
      for index in range(14): 
       sums_list.append(list1[index]+list2[index]) 
     except: 
      pass 

上面的代码工作,但是当我这个转换到列表理解的格式,像这样:

sums_list = [(list1[index]+list2[index])for index in range(14)] 

它返回一个错误Unsupported operand type(s) for + int and str

数据与是个人的数据记录,地址,职业,收入等工作,所以整数和strs。

我不明白为什么它在try循环中运行,而不是理解?

+0

** try **的全部**:除了:'是为了压制错误(除非:“是非常糟糕的练习,顺便说一下)。你期望会发生什么?你能提供投入,预期和实际产出吗? – jonrsharpe 2014-12-06 11:10:16

+0

谢谢..为此。它来自网站的数据行格式为:“39,State-gov,77516,Bachelors,13,N​​ever-married,Adm-clerical,Not-in-family,White,Male,2174,0,40,United - 州,<= 50K“。输出是用两个列表的元素和来生成2个列表。这只是为我正在工作的一份任务' – 2014-12-06 11:27:27

+0

**编辑问题**。你的第一个片段的输出是什么? – jonrsharpe 2014-12-06 11:32:54

回答

0

一个单一的除了会阻止任何除外被提出。

要解决你的代码,试试这个:

sums_list = [(int(list1[index]) + int(list2[index])) for index in range(14)] 

sums_list = [(str(list1[index]) + str(list2[index])) for index in range(14)] 

也许这些列表中的一个有一个字符串,而不是一个整数,字符串和整数不能由串联+ operator

相关问题