我有一个脚本,我在其中为每个用户提取值并在列表中添加它但我得到“'NoneType'对象没有属性'append'”。我的代码就像
last_list=[]
if p.last_name==None or p.last_name=="":
pass
last_list=last_list.append(p.last_name)
print last_list
我想在列表中添加姓氏。如果没有,那么就不要在列表中添加它。请帮忙 注意:p是我用来从我的模块获取信息的对象,其中包含所有first_name,last_name,age等....请建议....提前致谢
答案 0 :(得分:35)
列表是可变的
更改
last_list=last_list.append(p.last_name)
到
last_list.append(p.last_name)
将起作用
答案 1 :(得分:34)
在执行pan_list.append(p.last)
时,您正在进行就地操作,这是一个修改对象并且不返回任何内容的操作(即None
)。
你应该这样做:
last_list=[]
if p.last_name==None or p.last_name=="":
pass
last_list.append(p.last) # Here I modify the last_list, no affectation
print last_list
答案 2 :(得分:4)
您不应将其分配给任何变量,当您在列表中添加内容时,它会自动更新。 仅使用:-
last_list.append(p.last)
如果再次将其分配给变量“ last_list”,它将不再是列表(由于尚未声明其类型,因此将成为无类型变量) 并且追加将在下一次运行中失效。
答案 3 :(得分:2)
我认为你想要的是:
last_list=[]
if p.last_name != None and p.last_name != "":
last_list.append(p.last_name)
print last_list
您当前的if语句:
if p.last_name == None or p.last_name == "":
pass
实际上从不做任何事情。如果p.last_name为none或为空字符串,则它在循环内不执行任何操作。如果p.last_name是其他内容,则跳过if语句的主体。
此外,您的声明pan_list.append(p.last)
似乎是一个拼写错误,因为我看到您发布的代码中的其他任何地方都没有使用pan_list和p.last。