这就是我想要做的。创建一个新列表(addtwo),其中每个元素是源列表(numberlist)中相应元素和前一个元素的总和。显然,新列表中的第一个元素与源列表中的第一个元素相同。
numberlist = [2, 4, 5, 1, 8, 2, 0, 1]
addtwo = [el[0] + el[1] for el in numberlist]
生成此错误消息: TypeError:' int'对象没有属性' getitem '
这是新列表的样子,使用" numberlist"中的数字:
[2, 6, 9, 6, 9, 10, 2, 1]
答案 0 :(得分:0)
在您的原始尝试中,el只是一个整数,而不是列表,因此尝试索引它会生成错误消息。
您需要迭代原始列表的内容,计算总和,以及 然后将这些金额附加到新列表中。
像这样的代码:
numberlist = [2, 4, 5, 1, 8, 2, 0, 1]
newlist = []
newlist.append(numberlist[0])
for index in range(1,len(numberlist)):
sum = numberlist[index] + numberlist[index-1]
newlist.append(sum)
print 'newlist', newlist
使用列表理解的替代版本,原始列表中的前导元素是
numberlist = [2, 4, 5, 1, 8, 2, 0, 1]
newlist_comp = [numberlist[index] + numberlist[index-1] for index in range(1,len(numberlist))]
newlist_two = numberlist[0] + newlist_comp
print 'newlist_two', newlist_two