当我尝试通过函数运行列表并返回新列表时,我在第 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 行的消息。但是,它应该向下转移到打印列表的打印语句。
2 回答
湖上湖
TA贡献2003条经验 获得超2个赞
def newListEven (l): reverse_l=l[::-1] return [reverse_l[n]+ l[n] for n in range (0, int(len(l)/2))]
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
代码有几个问题。
l.reverse
是一种方法。它是一种不返回任何内容的方法。做l.reverse()
将修改列表l
。即使您进行了这两次更正,您的代码仍然存在另一个错误。
<list>
是可变的。考虑以下情况。regular=l
. 这l
是一个列表regular
。要访问列表,您需要使用[]
. 前任。regular[0]
第二个问题是您的
reverse=l.reverse
.
l = [1,2,3]
x = l
l.reverse()
print(l) # [3,2,1]
print(x) # [3,2,1]
与上述情况一样,l.reverse两者都会反转l,x因为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;
添加回答
举报
0/150
提交
取消