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

当我尝试通过函数运行列表并返回新列表时,我在第 6 行收到“TypeError:'list' object is not callable”消息。如果有帮助的话,两个被调用的变量一开始都是列表。


该函数应该获取列表的第一个和最后一个数字,将它们相加,然后沿着列表向下移动到中心。例如,列表 [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:“列表”对象不可调用


第 6 行的消息。但是,它应该向下转移到打印列表的打印语句。


翻过高山走不出你
浏览 150回答 2
2回答

湖上湖

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

蝴蝶刀刀

代码有几个问题。l.reverse是一种方法。它是一种不返回任何内容的方法。做l.reverse()将修改列表l。即使您进行了这两次更正,您的代码仍然存在另一个错误。<list>是可变的。考虑以下情况。regular=l.&nbsp;这l是一个列表regular。要访问列表,您需要使用[].&nbsp;前任。regular[0]第二个问题是您的reverse=l.reverse.l = [1,2,3]x = ll.reverse()print(l) # [3,2,1]print(x) # [3,2,1]与上述情况一样,l.reverse两者都会反转l,x因为x它只是对 l 的引用。为了避免这种使用copy或只是这样做x=l[:]。您的代码已更新。def newListEven (l, newL):&nbsp; &nbsp; regular=l[:];&nbsp; &nbsp; l.reverse();&nbsp; &nbsp; newL=[];&nbsp; &nbsp; for n in range (0, int(len(l)/2)):&nbsp; &nbsp; &nbsp; &nbsp; variable=(regular[n]+ l[n]);&nbsp; &nbsp; &nbsp; &nbsp; newL.append(variable);&nbsp; &nbsp; return newL;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python