函数中的“ TypeError:'列表'对象不可调用”

时间:2019-10-18 15:37:04

标签: python

当我尝试通过函数运行列表并返回新列表时,我在第六行收到“ TypeError:'list'对象不可调用”消息。开头,这两个被调用的变量都是列表(如果有帮助的话)。

该功能应采用列表的第一位和最后一位,将其添加,然后在列表中向下移动至中心。例如,列表[1、4、2、2]将导致一个新列表[3、6]。此功能仅涵盖偶数情况,因此无需担心。

`def newListEven (l, newL):
    regular=l;
    reverse=l.reverse;
    newL=[];

    for n in range (0, int(len(l)/2)):
        variable=(regular(n)+ reverse(n));
        newL.append(variable);
    return newL;`

无论如何,正如我之前提到的,我得到一个:

  

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

第六行的

消息。但是,它应该向下传递到一个打印语句,该语句将打印列表。

2 个答案:

答案 0 :(得分:0)

  • 代码有几个问题。
    • regular=ll是列表,regular也是如此。要访问列表,您需要使用[]。例如regular[0]
    • 第二个问题与您的reverse=l.reverse有关。
      • l.reverse是一种方法。它是什么都不返回的方法。 l.reverse()将使列表l消失。
      • 即使进行了两次更正,代码中仍然存在另一个错误。 <list>是可变的。考虑以下情况。
l = [1,2,3]
x = l
l.reverse()
print(l) # [3,2,1]
print(x) # [3,2,1]
  • 在上述情况下,l.reverse将同时反转lx,因为x仅引用l。为避免这种情况,请使用copy或只需执行x=l[:]

  • 您的代码已更新。

def newListEven (l, newL):
    regular=l[:];
    l.reverse();
    newL=[];

    for n in range (0, int(len(l)/2)):
        variable=(regular[n]+ l[n]);
        newL.append(variable);
    return newL;

答案 1 :(得分:0)

def newListEven (l):
    reverse_l=l[::-1]
    return [reverse_l[n]+ l[n] for n in range (0, int(len(l)/2))]