Python中两种list.remove()列表操作执行结果不一致是什么原因?
Python列表remove方法两种写法结果差异原因
核心原因是Python中列表的remove()方法是原地修改方法,执行后只会修改原列表本身,方法的返回值固定为None,两种写法的差异本质是打印的对象不同:
- 第一种写法:
你先将创建的列表赋值给了变量list1,调用list1.remove('a')后,修改的是list1指向的列表本身,后续打印list1这个变量指向的列表内容,自然得到修改后的['b', 'c']。 - 第二种写法:
list(text)会临时生成一个新的列表对象,但你没有将这个临时对象赋值给任何变量,直接调用了它的remove('a')方法,此时你打印的是remove()方法的返回值,所以得到的结果是None,而被修改的临时列表因为没有任何变量引用,执行完方法后就会被系统回收,无法再获取它的内容。
如果你想要第二种写法得到和第一种一致的结果,需要先将临时生成的列表赋值给变量保存,示例如下:
text = "abc" list2 = list(text) list2.remove('a') print(list2) # 运行结果为 ['b', 'c']
补充说明:Python中大部分可变对象的修改类方法都是原地修改返回None的设计,包括列表的append()、extend()、sort()、reverse(),字典的update()等,使用时不要直接将方法调用结果赋值给变量,否则会覆盖原对象得到None。
内容的提问来源于stack exchange,提问作者huvdev4
相关产品推荐
相关产品推荐

