这三种从列表中删除元素的方法有什么区别吗?

>>> a = [1, 2, 3]
>>> a.remove(2)
>>> a
[1, 3]

>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]

>>> a = [1, 2, 3]
>>> a.pop(1)
2
>>> a
[1, 3]

当前回答

其他人已经回答得很好了。这个来自我这边:)

显然,pop是唯一返回值的函数,remove是唯一搜索对象的函数,而del将自身限制为简单的删除。

其他回答

pop

获取index(如果给定,则获取last),删除该索引处的值,并返回值

删除

获取值,删除第一次出现的内容,并不返回任何内容

删除

获取索引,删除该索引处的值,并不返回任何值

也可以使用remove按索引删除值。

n = [1, 3, 5]

n.remove(n[1])

N则表示[1,5]

其他人已经回答得很好了。这个来自我这边:)

显然,pop是唯一返回值的函数,remove是唯一搜索对象的函数,而del将自身限制为简单的删除。

del、pop和remove在执行速度上的差异:

当移除任何中间项目时:

import timeit
print(timeit.timeit("a=[1,2,3,4,5]\ndel a[3]",number=100000))
print(timeit.timeit("a=[1,2,3,4,5]\na.pop(3)",number=100000))
print(timeit.timeit("a=[1,2,3,4,5]\na.remove(3)",number=100000))

Del vs pop vs remove:

0.019387657986953855
0.02506213402375579
0.033232167130336165

Del()似乎比其他两个快得多,而remove()是最慢的。

同时删除最后一项:

print(timeit.timeit("a=[1,2,3,4,5]\ndel a[-1]",number=100000))
print(timeit.timeit("a=[1,2,3,4,5]\na.pop()",number=100000))
print(timeit.timeit("a=[1,2,3,4,5]\na.remove(5)",number=100000))

Del vs pop vs remove:

0.01974551402963698
0.020333584863692522
0.03434014297090471

Del()和pop()删除最后一项所需的时间相似。

这里有很多很好的解释,但我会尽量简化。

其中,remove和pop是后缀,delete是前缀。

remove():用于删除第一次出现的元素。 删除(n) =>第一次出现在列表中的n。

>>> a = [0, 2, 3, 2, 1, 4, 6, 5, 7]
>>> a.remove(2)   # where i = 2
>>> a
[0, 3, 2, 1, 4, 6, 5, 7]

pop():用于删除元素…

如果没有指定索引: Pop() =>从列表结束

>>> a.pop()
>>> a
[0, 3, 2, 1, 4, 6, 5]

如果指定了索引: Pop (index) = index的>

>>> a.pop(2)
>>> a
[0, 3, 1, 4, 6, 5]

警告:前方有危险

del():这是一个前缀方法。

注意相同方法的两种不同语法:带[]和不带。它有能力:

删除索引 Del a[index] =>用于删除索引和它的关联值,就像pop一样。

>>> del a[1]
>>> a
[0, 1, 4, 6, 5]

删除范围[index_1:index_N]中的值: 删除a[0:3] =>多个范围内的值。

>>> del a[0:3]
>>> a
[6, 5]

最后但并非最不重要的,删除整个列表在一个镜头。 如上所述,Del (a) =>。

>>> del (a)
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

希望这能澄清困惑。