Python 类型错误:“列表”对象不可调用

Posted

技术标签:

【中文标题】Python 类型错误:“列表”对象不可调用【英文标题】:Python Type Error: 'List' object is not callable 【发布时间】:2017-02-19 15:04:57 【问题描述】:

我在 Python27 的这个小代码内容中遇到了这个错误。谁能帮我这个?提前致谢。

运行时错误回溯(最后一次调用):文件 “5eb4481881d51d6ece1c375c80f5e509.py”,第 57 行,在 print len(arr) TypeError: 'list' object is not callable

global maximum

def _lis(arr , n ):

    # to allow the access of global variable
    global maximum

    # Base Case
    if n == 1 :
        return 1

    # maxEndingHere is the length of LIS ending with arr[n-1]
    maxEndingHere = 1

    """Recursively get all LIS ending with arr[0], arr[1]..arr[n-2]
       IF arr[n-1] is maller than arr[n-1], and max ending with
       arr[n-1] needs to be updated, then update it"""
    for i in xrange(1, n):
        res = _lis(arr , i)
        if arr[i-1] < arr[n-1] and res+1 > maxEndingHere:
            maxEndingHere = res +1

    # Compare maxEndingHere with overall maximum. And
    # update the overall maximum if needed
    maximum = max(maximum , maxEndingHere)

    return maxEndingHere

def lis(arr):

    # to allow the access of global variable
    global maximum

    # lenght of arr
    n = len(arr)

    # maximum variable holds the result
    maximum = 1

    # The function _lis() stores its result in maximum
    _lis(arr , n)

    return maximum

num_t = input()

len = [None]*num_t

arr = []

for i in range(0,num_t):

    len[i] = input()

    arr.append(map(int, raw_input().split()))

    print len(arr)
    break    

【问题讨论】:

不要将内置函数名称分配给其他东西。 您通过变量len 覆盖len 函数。尝试使用另一个变量名。 @AndrewL。谢谢!刚刚想通了 @acw1668 谢谢 【参考方案1】:

您已经创建了一个名为 len 的列表,正如您可以从这里看到的那样,您可以对其进行索引:

len[i] = input()

所以很自然,len 不再是获取列表长度的函数,从而导致您收到错误。

解决方案:将您的 len 命名为其他名称。

【讨论】:

【参考方案2】:

当您定义一个也是内置函数名称的变量时会发生这种情况。 将变量 len 更改为其他值。

【讨论】:

以上是关于Python 类型错误:“列表”对象不可调用的主要内容,如果未能解决你的问题,请参考以下文章

映射到列表错误:系列对象不可调用

Python/Pandas TypeError:“列表”对象不可调用

TypeError:“列表”对象在尝试访问列表时不可调用

Boost.Python 返回一个不可复制对象的列表

Python不可变对象元组(tuple)详解

TypeError:'ResultSet'对象不可调用 - 带有BeautifulSoup的Python