Python中列表的总和

Sum of a list in Python

我原以为用python列出的数字可以回答我的问题,但事实并非如此。

关于上下文,我正在研究ProjectEuler,问题9:https://projectEuler.net/problem=9

我有错误

1
TypeError: unsupported operand type(s) for +: 'int' and 'list'

为线

1
while sum(triplesList) <= 1000:

我不知道为什么sum(listname)不起作用。

所有代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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])

我感谢你的帮助!


更改此行

1
triplesList = [[a,b] for i in range(1)]

1
triplesList = [a, b, a**2 + b**2]

并移除

1
triplesList.append( a**2 + b **2)

这将产生一个1d表[a,b,c]的列表,这是我从你的问题中得到的感觉。

前者将生成表单的列表

1
[[a,b], c]

你不能这样做。


sum()只接受可iterable的数字对象,而不接受列表列表。

TriplesList是对其执行此操作时的列表:

1
triplesList = [[a,b] for i in range(1)]

因此,sum()抱怨它不知道如何添加列表列表,只是整数列表。

我相信这句话可以理解为:

1
triplesList = [a, b]