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: |
我不知道为什么
所有代码如下:
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] |