如何删除与列表元素相关的类型错误

时间:2018-08-07 06:50:25

标签: python python-3.x

一个三角形数字

number = '''3
7 4
2 4 6
8 5 9 3'''

从上到下查找最大和。

pyramidlist = [[int(x) for x in y.split(' ')] for y in number.split('\n')]

for i in range(len(pyramidlist) - 2, -1, -1):
    for j in range(i+1):
        pyramidlist[i][j] += max(pyramidlist[i+1][j], pyramidlist[i+1][j+1])

我收到一个错误:

pyramidlist[i][j] += max(pyramidlist[i+1][j], pyramidlist[i+1][j+1])
TypeError: 'int' object is not callable

什么是金字塔列表?为什么我认为max不起作用:

In [183]: pyramidlist
Out[183]: [[3], [7, 4], [2, 4, 6], [8, 5, 9, 3]]

In [184]: max(pyramidlist[1][0],pyramidlist[1][1])

Traceback (most recent call last):

  File "<ipython-input-184-c42be0ee587f>", line 1, in <module>
    max(pyramidlist[1][0],pyramidlist[1][1])

TypeError: 'int' object is not callable

问题:Project Euler

1 个答案:

答案 0 :(得分:2)

您正在使用IPython。您在执行的代码/单元中分配的所有变量在整个会话之前都将保留其值。

如果您这样做

max = 25

然后

max(3, 4)

会给你

TypeError: 'int' object is not callable

如果错误地替换了一个内置函数,则可以像这样将其原始值返回:

import builtins
max = builtins.max

max(3, 4)
# 4

正如@ user2357112所评论的那样,一种更简单的方法是

del max

用他自己的话说,

  

更容易,更彻底。 (看起来应该   情况更糟,但事实并非如此。)