我认为sum a list of numbers in Python会回答我的问题,但事实并非如此。
对于上下文,我正在研究Project Euler,问题9:https://projecteuler.net/problem=9
我收到错误
TypeError: unsupported operand type(s) for +: 'int' and 'list'
为行
while sum(triplesList) <= 1000:
我不知道为什么sum(listname)
无效。
以下是所有代码:
triplesList = []
a = 0
b = 0
while sum(triplesList) <= 1000:
a += 1
b += 1
triplesList = [[a,b] for i in range(1)]
triplesList.append( a**2 + b **2)
if (math.sqrt(triplesList[1])).is_integer():
triplesList[1] = int(math.sqrt(triplesList[1]))
if sum(triplesList[0], triplesList[1]) == 1000:
print triplesList
print sum(triplesList[0] , triplesList[1])
print reduce(lambda x, y: x * y, triplesList[0], triplesList[1])
我很感激帮助!
答案 0 :(得分:1)
sum()只接受数字的可迭代对象,而不是列表。
triplesList是执行此操作时列表的列表:
triplesList = [[a,b] for i in range(1)]
因此,sum()抱怨说它不知道如何添加列表列表,只是整数列表
我相信该行可以改为:
triplesList = [a, b]
答案 1 :(得分:1)
更改此行
triplesList = [[a,b] for i in range(1)]
要
triplesList = [a, b, a**2 + b**2]
然后删除
triplesList.append( a**2 + b **2)
这将生成[a,b,c]形式的一维列表,这是我从你的问题中得到的感觉。
前者将生成表格列表
[[a,b], c]
你不能sum