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循环的对象是一个可迭代的对象。

  • 相关阅读:
    1、听说过Redis吗?它是什么?
    55、数据库高并发是我们经常会遇到的,你有什么好的解决方案吗?
    54、数据库如何保证持久性?
    53、数据库如何保证原子性?
    52、数据库如何保证一致性?
    注解定义、基本语法和属性
    Macbook 装机必备--开发篇
    http
    python:beaufiful
    python-yield
  • 原文地址:https://www.cnblogs.com/materfont/p/9543577.html
Copyright © 2011-2022 走看看