zoukankan      html  css  js  c++  java
  • 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循环的对象是一个可迭代的对象。

  • 相关阅读:
    Ext2.0布局类初探
    从DHTML、HTC、XHTML到AJAX
    我常用的一些ASP自定义函数
    Javascript的调试利器:Firebug使用详解
    ODBC的多线程应用
    召唤有丰富IOCP实践经验的同行
    欢迎
    关于.NET安装时的dotNETFXRedist_x86.msm
    所谓设计模式
    VC编程经验汇总(一)
  • 原文地址:https://www.cnblogs.com/materfont/p/9543577.html
Copyright © 2011-2022 走看看