使用None替换列表中单个元素的有效方法

时间:2013-05-30 17:23:30

标签: python python-2.7

我有一个包含唯一字符串的列表。我想从此列表中删除给定的字符串(如果在列表中找到),但不想更改列表中所有其他元素的标记。

所以我认为我应该用None替换给定(和找到)的字符串。

最有效的方法是什么?我考虑过列表理解,但是对于一个元素来说可能有点矫枉过正吗?

3 个答案:

答案 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列表支持数组的信息,而不是链接结构。