Ошибка типа Python: объект ‘List’ не вызывается

#python #list

#python #Список

Вопрос:

Я получаю эту ошибку из-за небольшого содержимого кода Python27. Кто-нибудь может мне помочь с этим? Заранее спасибо.

Обратная трассировка ошибки во время выполнения (последний последний вызов): файл «5eb4481881d51d6ece1c375c80f5e509.py «, строка 57, в print len(arr) TypeError: объект ‘list’ не вызывается

 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    
  

Ответ №1:

Вы создали список с именем len , как вы можете видеть здесь, исходя из того факта, что вы можете его индексировать:

 len[i] = input()
  

Поэтому, естественно, len это больше не функция, которая получает длину списка, что приводит к получаемой ошибке.

Решение: назовите свой len список как-нибудь иначе.

Ответ №2:

Это то, что происходит, когда вы определяете переменную, которая также является именем встроенной функции.
Измените переменную len на что-то другое.