for 循环中的列表 append() 引发异常:'NoneType' 对象没有属性 'append'

新手上路,请多包涵

在 Python 中,尝试使用循环对列表执行最基本的附加函数:不确定我在这里缺少什么:

 a = []
for i in range(5):
    a = a.append(i)

返回:

“NoneType”对象没有“附加”属性

原文由 jim jarnac 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 635
1 个回答

list.append 函数不返回任何值(但 None ),它只是将值添加到您用来调用该方法的列表中。

在第一轮循环中,您将分配 None (因为 append 的不返回)给 a ,然后在第二轮中调用 a.append ,如 a is None 它会引发您看到的异常

您只需将其更改为:

 a = []
for i in range(5):
    # change a = a.append(i) to
    a.append(i)
print(a)
# [0, 1, 2, 3, 4]

list.append 是所谓的 变异或破坏 方法,即它将先前的对象破坏或变异为新对象(或新状态)。

如果您想基于一个列表创建一个新列表而不破坏或改变它,您可以执行以下操作:

 a=['a', 'b', 'c']
result = a + ['d']

print result
# ['a', 'b', 'c', 'd']

print a
# ['a', 'b', 'c']

作为推论,您可以通过执行以下操作来模仿 append 方法:

 a = ['a', 'b', 'c']
a = a + ['d']

print a
# ['a', 'b', 'c', 'd']

原文由 Rafael Aguilar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题