Python中remove,pop,del的区别

Posted 仰望星空&脚踏实地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中remove,pop,del的区别相关的知识,希望对你有一定的参考价值。

先上题:写出最终打印的结果

a = [1, 2, 3, 4]
for x in a:
    a.remove(x)
print(a)

print("=" * 20)

b = [1, 2, 3, 4]
for i in b:
    b.pop()
print(b)
print("=" * 20)

c = [1, 2, 3, 4]
for i in range(len(c)):
    del c[0]

print(c)

  一开始一看应该都是[ ]吧??

在机器上跑了一下:

[2, 4]
====================
[1, 2]
====================
[ ]

得到的结果如上,是不是很吃惊!!

首先要弄明白remove,pop,del三者的区别

1.用remove("")方法删除指定元素,没有该元素时报错.

>>> number = [1,3,2,3,4]
>>> number.remove(3)
>>> print(number)
[1, 2, 3, 4]
>>> number.remove(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

2.利用del[索引数] 函数删除指定索引数的元素

>>> number = [‘a‘,‘c‘,‘d‘]
>>> del number[1] #删除指定索引数的元素
>>> print(number)
[‘a‘, ‘d‘]

3.利用pop()方法弹出元素,当()内无索引数时默认弹出最后一个元素

>>> number = [1,2,30,0]
>>> number.pop() #无索引弹出最后一个元素
0
>>> number.pop(1) #弹出索引为1的元素
2
>>> print(number)
[1, 30]

  以上是三者的用法,需要注意的是:del是python语句,而不是列表方法,无法通过list来调用

对列表a看一下循环的索引的变化

 

a = [1, 2, 3, 4]
for index, x in enumerate(a):
    print("索引是{},去删除的值是{},列表的长度是{}".format(index, x, len(a)))
    a.remove(x)
    print("=" * 20)
print(a)

结果如下:

索引是0,去删除的值是1,列表的长度是4
====================
索引是1,去删除的值是3,列表的长度是3
====================
[2, 4]

 

  列表的长度在变化,索引值也在变化。这个是容易忽视的一个点,原因是for循环的对象是一个可迭代的对象。

 







以上是关于Python中remove,pop,del的区别的主要内容,如果未能解决你的问题,请参考以下文章

python列表删除--remove(),del,pop()

python的append insert extend pop del remove使用

2017-12-19python全栈9期第四天第二节之列表的增删查改之删除的pop和del和remove和clear

python remove与del 的区别

Python remove()和del语句 区别和辨析 列表删除操作

python remove跟pop的区别