Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用None替换列表中单个元素的有效方法_Python_Python 2.7 - Fatal编程技术网

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

Python 用None替换列表中单个元素的有效方法,python,python-2.7,Python,Python 2.7,我有一个包含唯一字符串的列表。我想从此列表中删除给定字符串(如果在列表中找到),但不想更改列表中所有其他元素的标记 因此,我认为我应该用None替换给定(和找到的)字符串 最有效的方法是什么?我曾考虑过列表理解,但对于一个元素来说可能有点过分了吗 如果需要查找元素,则选择的任何方法都将是O(n)或O(log(n))(如果可用)。一旦知道元素的索引,替换元素就是一个固定时间操作 真正的问题是你是否真的想要一份清单。如果不需要顺序,则使用集合,在这种情况下,查找和插入是O(n)。如果您需要订单,并且

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

因此,我认为我应该用
None
替换给定(和找到的)字符串


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

如果需要查找元素,则选择的任何方法都将是O(n)或O(log(n))(如果可用)。一旦知道元素的索引,替换元素就是一个固定时间操作

真正的问题是你是否真的想要一份清单。如果不需要顺序,则使用集合,在这种情况下,查找和插入是O(n)。如果您需要订单,并且您想在AND和OUT中交换事物,那么考虑树或堆结构。
您可能缺少python列表支持数组而不是链接结构的信息。

一些基本列表可能会有帮助:

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
给出第一次出现的索引,而不仅仅是赋值。

这是一种简单的方法,因为列表是可变的。获得索引后,可以指定一个新值:

list[list.index('foo')] = None

听起来你需要一个新的列表。我的直觉是你不想要一个列表,你想要一套。这意味着不再有任何订单,但它在概念上似乎是合适的(而且既简单又快速)。@delnan,谢谢你的建议。但是我需要一个列表,因为它们的索引将用于其他目的。通过执行
mylist[index]=None
@Marcin,我确实需要顺序。关于使用树木的好建议,仔细研究一下。@MLister为什么需要订购?如果您正在进行交换,您可能不需要对数据结构进行排序。只有在需要按顺序迭代结构或按顺序处理结构时,才需要顺序。否则,您可能会在以后存储排序数据,以便在必要时进行排序。这比列表理解快吗?时间是用来查找字符串的。无论列表有多大,替换都很快。方法
index()
附带列表。你不可能再快了。如果只需要搜索一次,那么将列表转换为集合将没有帮助。