Python列表调用remove()为何仅删除一个指定重复元素?
Python列表remove()方法单次删除的原因及批量删除方案
为什么remove()只删除一个匹配元素
list.remove(x)是Python列表的内置方法,官方定义的行为就是仅搜索并移除列表中第一个出现的x元素,设计上本身就不支持单次调用批量删除所有匹配项。你只调用一次remove("banana")时,只会删除列表里索引为1的第一个banana,索引为3的第二个banana会保留,就会得到你贴出的运行结果。
移除列表中所有匹配元素的方案
推荐两种常用实现方式:
- 方案1:列表推导式(最高效,最推荐)
直接生成过滤后的新列表,逻辑简单且时间复杂度仅为O(n):thislist = ["apple", "banana", "cherry", "banana"] # 只保留不等于'banana'的元素 thislist = [item for item in thislist if item != "banana"] print(thislist) # 输出:['apple', 'cherry'] - 方案2:while循环调用remove(适合不想生成新列表的场景,效率较低)
循环判断目标元素是否存在,存在就移除第一个匹配项,直到没有匹配元素为止,列表较大时不推荐,因为每次remove都需要从头遍历列表:thislist = ["apple", "banana", "cherry", "banana"] while "banana" in thislist: thislist.remove("banana") print(thislist) # 输出:['apple', 'cherry']
内容的提问来源于stack exchange,提问作者Sairaj Yadav
相关产品推荐
相关产品推荐

