我有一个包含唯一字符串的列表。我想从此列表中删除给定的字符串(如果在列表中找到),但不想更改列表中所有其他元素的标记。
所以我认为我应该用None
替换给定(和找到)的字符串。
最有效的方法是什么?我考虑过列表理解,但是对于一个元素来说可能有点矫枉过正吗?
答案 0 :(得分:3)
这是一种直截了当的方法,因为列表是可变的。获得索引后,您可以指定一个新值:
list[list.index('foo')] = None
答案 1 :(得分:1)
某些基本列表可能有所帮助:
In [211]: L = list('abcde')
In [212]: L
Out[212]: ['a', 'b', 'c', 'd', 'e']
In [213]: i = L.index('c')
In [214]: L[i] = None
In [215]: L
Out[215]: ['a', 'b', None, 'd', 'e']
index
给出第一次出现的索引而不仅仅是赋值。
答案 2 :(得分:0)
如果需要查找元素,您选择的任何方法都可以是O(n)或O(log(n))(如果可用)。一旦知道元素的索引,替换元素就是一个恒定的时间操作。
真正的问题是你是否真的想要一个清单。如果不需要订单,则使用集合,在这种情况下,查找和插入是O(n)。如果您需要订购,并且想要一次又一次地交换东西,那么请考虑树或堆结构。
您可能错过了python列表支持数组的信息,而不是链接结构。