当我尝试通过函数运行列表并返回新列表时,我在第六行收到“ 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:“列表”对象不可调用
消息。但是,它应该向下传递到一个打印语句,该语句将打印列表。
答案 0 :(得分:0)
regular=l
。 l
是列表,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
将同时反转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;
答案 1 :(得分:0)
def newListEven (l):
reverse_l=l[::-1]
return [reverse_l[n]+ l[n] for n in range (0, int(len(l)/2))]