2015-10-17 46 views
0

这里是我的代码:为什么追加到列表会在Python中引发一个NoneType错误?

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。这里发生了什么?

回答

1

list.append()是就地方法,它不返回任何东西(因此默认情况下它返回None,因为所有功能调用必须返回一些值,如果某个函数没有显式返回任何东西,则调用返回`None)。

因此,当你将它回mList,就变成None和当你下一次迭代 - mList.append(),它出现了错误的mListNone

你应该尝试 -

mList.append(item) 

或者你可以简单地做你正在尝试在列表理解的事 -

mList = [item for line in text.splitlines() for item in line.split(" ")] 
1

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) 
相关问题