Python中列表的总和

时间:2014-10-09 16:44:05

标签: python list

我认为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])

我很感激帮助!

2 个答案:

答案 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