追加将我的列表转换为NoneType在Python Shell中,我输入了:aList = ['a', 'b', 'c', 'd'] for i in aList:
print(i)得到了a
b
c
d但是当我尝试:aList = ['a', 'b', 'c', 'd'] aList = aList.append('e') for i in aList:
print(i)得到了Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
for i in aList: TypeError: 'NoneType' object is not iterable有谁知道发生了什么?我该如何解决/解决它?
3 回答
精慕HU
TA贡献1845条经验 获得超8个赞
list.append
是一种修改现有列表的方法。它不返回新列表 - 它返回None
,就像大多数修改列表的方法一样。只需这样做aList.append('e')
,您的列表将附加元素。
30秒到达战场
TA贡献1828条经验 获得超6个赞
一般来说,你想要的是接受的答案。但是如果你想要覆盖值并创建一个新列表的行为(在某些情况下这是合理的^),你可以做的是使用“splat operator”,也称为list unpacking:
aList = [*aList, 'e']#: ['a', 'b', 'c', 'd', 'e']
或者,如果您需要支持python 2,请使用+
运算符:
aList = aList + ['e']#: ['a', 'b', 'c', 'd', 'e']
^有很多情况下你想要避免变异的副作用.append()
。首先,想象一下你想要将某些东西附加到你作为函数参数的列表中。使用该功能的人可能并不期望他们提供的列表会被更改。使用这样的东西可以保持你的功能“纯粹”而没有“副作用”。
添加回答
举报
0/150
提交
取消