>>> 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]
>>>
Run Code Online (Sandbox Code Playgroud)
以上三种方法从列表中删除元素有什么区别吗?
Mar*_*ers 1164
是,remove删除第一个匹配值,而不是特定索引:
>>> a = [0, 2, 3, 2]
>>> a.remove(2)
>>> a
[0, 3, 2]
Run Code Online (Sandbox Code Playgroud)
del 删除特定索引处的项目:
>>> a = [3, 2, 2, 1]
>>> del a[1]
>>> a
[3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
并pop删除特定索引处的项目并返回它.
>>> a = [4, 3, 5]
>>> a.pop(1)
3
>>> a
[4, 5]
Run Code Online (Sandbox Code Playgroud)
他们的错误模式也不同:
>>> a = [4, 5, 6]
>>> a.remove(7)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> del a[7]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> a.pop(7)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop index out of range
Run Code Online (Sandbox Code Playgroud)
Sve*_*ach 152
用于del按索引删除元素,pop()如果需要返回值,则通过索引remove()删除元素,以及按值删除元素.后者需要搜索列表,ValueError如果列表中没有出现这样的值则会引发.
当i从n元素列表中删除索引时,这些方法的计算复杂性是
del O(n - i)
pop O(n - i)
remove O(n)
Run Code Online (Sandbox Code Playgroud)
Chr*_*nds 80
由于没有其他人提到它,请注意del(不像pop)允许删除一系列索引,因为列表切片:
>>> lst = [3, 2, 2, 1]
>>> del lst[1:]
>>> lst
[3]
Run Code Online (Sandbox Code Playgroud)
IndexError如果索引不在列表中,这也允许避免:
>>> lst = [3, 2, 2, 1]
>>> del lst[10:]
>>> lst
[3, 2, 2, 1]
Run Code Online (Sandbox Code Playgroud)
Sau*_*ahu 52
其他人已经很好地回答了.这个来自我的结尾:)
显然,pop是唯一一个返回值的人,并且remove是唯一一个搜索对象的人,同时del将自己限制为简单的删除.
May*_*til 17
这里有很多最佳的解释,但我会尽力简化一下。
在所有这些方法中,reverse和pop是后缀,而delete是prefix。
remove():用于删除元素的第一次出现
remove(i) =>第一次出现i值
>>> 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]
Run Code Online (Sandbox Code Playgroud)
pop():如果满足以下条件,则用于删除元素:
未指定
pop() =>从列表末尾
>>>a.pop()
>>>a
[0, 3, 2, 1, 4, 6, 5]
Run Code Online (Sandbox Code Playgroud)
指定的
pop(index) =>索引
>>>a.pop(2)
>>>a
[0, 3, 1, 4, 6, 5]
Run Code Online (Sandbox Code Playgroud)
delete():它是一个前缀方法。
注意同一方法的两种不同语法:[]和()。它具有以下功能:
1.删除索引
del a[index] =>用于删除索引及其关联值,就像pop。
>>>del a[1]
>>>a
[0, 1, 4, 6, 5]
Run Code Online (Sandbox Code Playgroud)
2.删除[index 1:index N]范围内的值
del a[0:3] =>范围内的多个值
>>>del a[0:3]
>>>a
[6, 5]
Run Code Online (Sandbox Code Playgroud)
3.最后但不是列表,一次删除整个列表
del (a) =>如上所述。
>>>del (a)
>>>a
Run Code Online (Sandbox Code Playgroud)
希望这可以澄清混淆。
| 归档时间: |
|
| 查看次数: |
1485012 次 |
| 最近记录: |