这三种从列表中删除元素的方法有什么区别吗?
>>> 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]
这三种从列表中删除元素的方法有什么区别吗?
>>> 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]
当前回答
这里有很多很好的解释,但我会尽量简化。
其中,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
希望这能澄清困惑。
其他回答
因为没有人提到它,请注意del(不像pop)允许删除一系列索引,因为列表切片:
>>> lst = [3, 2, 2, 1]
>>> del lst[1:]
>>> lst
[3]
这也允许避免IndexError如果索引不在列表中:
>>> lst = [3, 2, 2, 1]
>>> del lst[10:]
>>> lst
[3, 2, 2, 1]
这里有很多很好的解释,但我会尽量简化。
其中,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
希望这能澄清困惑。
pop
获取index(如果给定,则获取last),删除该索引处的值,并返回值
删除
获取值,删除第一次出现的内容,并不返回任何内容
删除
获取索引,删除该索引处的值,并不返回任何值
下面是一个详细的答案。
Del可用于任何类对象,而pop和remove可用于特定类。
为del
下面是一些例子
>>> a = 5
>>> b = "this is string"
>>> c = 1.432
>>> d = myClass()
>>> del c
>>> del a, b, d # we can use comma separated objects
我们可以在用户创建的类中重写__del__方法。
具体用途与列表
>>> a = [1, 4, 2, 4, 12, 3, 0]
>>> del a[4]
>>> a
[1, 4, 2, 4, 3, 0]
>>> del a[1: 3] # we can also use slicing for deleting range of indices
>>> a
[1, 4, 3, 0]
为流行
Pop将索引作为参数,并删除该索引处的元素
与del不同,当在list object上调用pop时,返回该下标处的值
>>> a = [1, 5, 3, 4, 7, 8]
>>> a.pop(3) # Will return the value at index 3
4
>>> a
[1, 5, 3, 7, 8]
为消除
Remove获取参数值并从列表中删除该值。
如果存在多个值,则删除第一个值
注意:如果该值不存在,将抛出ValueError
>>> a = [1, 5, 3, 4, 2, 7, 5]
>>> a.remove(5) # removes first occurence of 5
>>> a
[1, 3, 4, 2, 7, 5]
>>> a.remove(5)
>>> a
[1, 3, 4, 2, 7]
希望这个答案对你有帮助。
列表上的删除操作给定一个要删除的值。它搜索列表以查找具有该值的项,并删除找到的第一个匹配项。如果没有匹配项,则是一个错误,引发ValueError。
>>> x = [1, 0, 0, 0, 3, 4, 5]
>>> x.remove(4)
>>> x
[1, 0, 0, 0, 3, 5]
>>> del x[7]
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
del x[7]
IndexError: list assignment index out of range
del语句可用于删除整个列表。如果你有一个特定的列表项作为del的参数(例如listname[7]专门引用列表中的第8项),它会删除该项。甚至可以从列表中删除“slice”。如果索引超出范围,则会引发IndexError。
>>> x = [1, 2, 3, 4]
>>> del x[3]
>>> x
[1, 2, 3]
>>> del x[4]
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
del x[4]
IndexError: list assignment index out of range
The usual use of pop is to delete the last item from a list as you use the list as a stack. Unlike del, pop returns the value that it popped off the list. You can optionally give an index value to pop and pop from other than the end of the list (e.g listname.pop(0) will delete the first item from the list and return that first item as its result). You can use this to make the list behave like a queue, but there are library routines available that can provide queue operations with better performance than pop(0) does. It is an error if there index out of range, raises a IndexError.
>>> x = [1, 2, 3]
>>> x.pop(2)
3
>>> x
[1, 2]
>>> x.pop(4)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
x.pop(4)
IndexError: pop index out of range
有关更多细节,请参阅collections.deque。