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循環的對象是一個可迭代的對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM