Python中的'builtin_function_or_method'对象不可下标错误

时间:2019-12-01 21:57:29

标签: python arrays for-loop compiler-errors range

我有以下代码:

x = [[],[]]
y = [[],[]]

for a in range(36):
    x.append[0](a)
    x.append[1](a)
for l in range(36,71,1):
    y.append[0](l)
    y.append[1](l)

z = x+y

由于某种原因,它给了我这个错误:

'builtin_function_or_method' object is not subscriptable

3 个答案:

答案 0 :(得分:0)

您无法为append()函数建立索引。您可以使用insert()函数来做到这一点,就像这样:

list.insert(index, element)

append()只有一个参数,它是将添加到列表的 end 的元素。

list.append(item)

答案 1 :(得分:0)

x[0].append(a)

append是用于列表的方法,不具有下标功能。

答案 2 :(得分:0)

其他人提到了失败的原因,但是我要补充一点,如果您的目标是实现列表列表并将它们组合在一起,则您的更正代码为:

x = [[],[]]
y = [[],[]]

for a in range(36):
    x[0].append(a)
    x[1].append(a)
for l in range(36,71):
    y[0].append(l)
    y[1].append(l)

z = x+y

是实现这一目标的漫长方式。例如,完全消除循环/附加会更容易:

x = [list(range(36)), list(range(36))]
y = [list(range(36,71)), list(range(36,71))]
z = x+y

或者,如果您正在运行Python 3.8,并且想尝试使用新的海象运算符,以避免两次调用相同的list(range())

x = [(l := list(range(36))), l]
y = [(l := list(range(36,71))), l]
z = x+y