如何在O(1)时间内删除python列表中的元素

vid*_*rr7 1 python sorting algorithm

我想知道我们是否可以删除任何索引处的元素,比如O(1)时间中的最后一个索引.

Pru*_*une 9

实际上,你不必交换; 只需将end元素复制到所需的删除位置 - 不要打扰逆向赋值 - 并弹出最后一个(现在是冗余的)元素.为了删除元素n,

my_list[n] = my_list.pop()
Run Code Online (Sandbox Code Playgroud)

将在一行中做到这一点.

  • 我查了一下,发现如果我们在最后一个元素,这会给出错误.`如.my_list = [1,2,3]如果我们执行my_list [2] = my_list.pop()`将给出"IndexError:列表赋值索引超出范围",因为pop会将列表长度减少1.所以需要处理这个n == len(my_list)-1时的情况只是pop(). (3认同)