这是我的代码:
text="""col1 col2 col3
a 1 $
b 2 @
c 3 &
"""
mList = []
for line in text.splitlines():
for item in line.split(" "):
mList = mList.append(item)
这会引发错误'NoneType' object has no attribute 'append'
。我已经尝试了其他方法来创建列表并执行此操作,但我得到的最好的是列表转到None
。这里发生了什么?
答案 0 :(得分:2)
list.append
未返回(=返回None
),只是将该项附加到列表中。
>>> lst = []
>>> return_value_of_append = lst.append('something')
>>> return_value_of_append is None
True
因此,以下行会使mList
成为None
:
mList = mList.append(item)
用以下内容替换上述行解决了问题:
mList.append(item)
答案 1 :(得分:1)
list.append()
是一个就地方法,它不会返回任何内容(因此默认情况下会返回<=
,因为所有函数调用都必须返回一些值,并且如果某个函数没有显式返回任何内容,则调用返回“None”。
因此,当您将其分配回None
时,它会变为mList
,而当您执行None
时,会在下一次迭代中将其分配为mList.append()
{ {1}}。
你应该试试 -
mList
或者你可以在列表理解中完成你想要做的事情 -
None