我想象中有一个简单的解决方案,但可能是我忽略了它。比起复杂的解决方法,这样更好,对吧?
简单地说:
var = ['p', 's', 'c', 'x', 'd'].remove('d')
将var
的类型更改为None
。这是怎么回事?
remove
不返回任何内容。它会直接修改原始列表。不需要进行赋值操作。
替换
var = ['p', 's', 'c', 'x', 'd'].remove('d')
与
var = ['p', 's', 'c', 'x', 'd']
var.remove('d')
现在,var
将具有值 ['p', 's', 'c', 'x']
。None
,或者至少是除了self
之外的其他东西。(例外情况大多是特殊情况,比如__iadd__
,或者来自具有自己不同惯用语的框架的领域特定方法。) - abarnertremove
方法会直接在原列表上进行操作,并返回None
。你需要将其赋值给一个变量,然后再进行修改:
>>> var = ['p', 's', 'c', 'x', 'd']
>>> var.remove('d') # Notice how it doesn't return anything.
>>> var
['p', 's', 'c', 'x']
.remove
的方式不对吗?你是不是想用.pop
? - g.d.d.cremove
、index
和其他列表搜索方法的使用都是设计上存在问题的迹象。也许您应该使用一个set
,或者可能已经有了索引但没有使用它等。这绝对不是_始终如此_,但值得思考。 - abarnert