首页 > 解决方案 > 'builtin_function_or_method' 对象不可下标 Python 中的错误

问题描述

我有以下代码:

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

标签: pythonarraysfor-loopcompiler-errorsrange

解决方案


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

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 并想尝试新的 walrus 运算符以避免list(range())两次调用相同的运算符:

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

推荐阅读