猿问

追加将我的列表转换为NoneType

追加将我的列表转换为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

有谁知道发生了什么?我该如何解决/解决它?


繁星淼淼
浏览 1315回答 3
3回答

精慕HU

list.append是一种修改现有列表的方法。它不返回新列表 - 它返回None,就像大多数修改列表的方法一样。只需这样做aList.append('e'),您的列表将附加元素。

30秒到达战场

一般来说,你想要的是接受的答案。但是如果你想要覆盖值并创建一个新列表的行为(在某些情况下这是合理的^),你可以做的是使用“splat operator”,也称为list unpacking:aList&nbsp;=&nbsp;[*aList,&nbsp;'e']#:&nbsp;['a',&nbsp;'b',&nbsp;'c',&nbsp;'d',&nbsp;'e']或者,如果您需要支持python 2,请使用+运算符:aList&nbsp;=&nbsp;aList&nbsp;+&nbsp;['e']#:&nbsp;['a',&nbsp;'b',&nbsp;'c',&nbsp;'d',&nbsp;'e']^有很多情况下你想要避免变异的副作用.append()。首先,想象一下你想要将某些东西附加到你作为函数参数的列表中。使用该功能的人可能并不期望他们提供的列表会被更改。使用这样的东西可以保持你的功能“纯粹”而没有“副作用”。

慕哥9229398

删除你的第二行aList = aList.append('e')并仅使用aList.append("e"),这应该摆脱这个问题。
随时随地看视频慕课网APP

相关分类

Python
我要回答