精华内容
下载资源
问答
  • Python 中删除列表元素三种方法
    2022-04-22 14:31:21

    列表基本上是 Python 中最常用的数据结构之一了,并且删除操作也是经常使用的。

    那到底有哪些方法可以删除列表中的元素呢?这篇文章就来总结一下。

    一共有三种方法,分别是 remove , pop 和 del ,下面来详细说明。

    remove

    L.remove(value) -> None -- remove first occurrence of value. Raises ValueError if the value is not present.
    

    remove 是从列表中删除指定的元素,参数是 value。

    举个例子:

    >>> lst = [1, 2, 3]
    >>> lst.remove(2)
    >>> lst
    [1, 3]

    需要注意, remove 方法没有返回值,而且如果删除的元素不在列表中的话,会发生报错。

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

    pop

    L.pop([index]) -> item -- remove and return item at index (default last). Raises IndexError if list is empty or index is out of range.
    

    pop 是删除指定索引位置的元素,参数是 index。如果不指定索引,默认删除列表最后一个元素。

    >>> lst = [1, 2, 3]
    >>> lst.pop(1)
    2
    >>> lst
    [1, 3]
    >>>
    >>>
    >>>
    >>> lst = [1, 2, 3]
    >>>
    >>> lst.pop()
    3

    pop 方法是有返回值的,如果删除索引超出列表范围也会报错。

    >>> lst = [1, 2, 3]
    >>> lst.pop(5)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: pop index out of range
    >>>

    del

    del 一般用在字典比较多,不过也可以用在列表上。

    >>> lst = [1, 2, 3]
    >>> del(lst[1])
    >>> lst
    [1, 3]

    直接传元素值是不行的,会报错:

    >>> lst = [1, 2, 3]
    >>> del(2)
      File "<stdin>", line 1
    SyntaxError: cannot delete literal

    del 还可以删除整个列表:

    >>> lst = [1, 2, 3]
    >>> del(lst)
    >>>
    >>> lst
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'lst' is not defined

    以上就是本文的全部内容,如果觉得还不错的话,感谢支持。

    更多相关内容
  • 如下所示: a = [1,1,1,2,3,45,1,2,1] ... 您可能感兴趣的文章:python删除列表元素三种方法(remove,pop,del)python 删除列表里所有空格项的方法总结python清空命令行方式Python实现去除列表中重复
  • 主要介绍了Python实现列表删除重复元素三种常用方法,结合实例形式对比分析了Python针对列表元素的遍历、判断、转换等相关操作技巧,需要的朋友可以参考下
  • remove 删除单个元素删除首个符合条件的元素,按值删除,返回值为空 List_remove = [1, 2, 2, 2, 3, 4] print(List_remove.remove(2)) print(after remove, List_remove) # None # after remove [1, 2, 2, 3, 4]...
  • python中关于删除list中的某个元素,一般有三种方法:remove、pop、del: 1.remove: 删除单个元素删除首个符合条件的元素,按值删除 举例说明: >>> str=[1,2,3,4,5,2,6] >>> str.remove(2) >>> str [1, 3, 4, 5,...
  • 列表删除元素三种方法

    万次阅读 2020-04-06 19:47:54
    列表删除元素方法三种 (1)del: 根据下标进行删除 (2)pop: 删除最后的一个元素 (3)remove: 根据元素的值进行删除 1,使用 del 删除列表 使用 del 语句,既可以删除指定下标的列表元素,也可以直接将...

    在列表中删除元素的方法有三种

    (1)del: 根据下标进行删除
    (2)pop: 删除最后的一个元素
    (3)remove: 根据元素的值进行删除

    1,使用 del 删除列表

    使用 del 语句,既可以删除指定下标的列表元素,也可以直接将整个列表进行删除。
    通过一个案例演示如下:

    movie_name = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']
    print('------删除之前--------')
    for temp in movie_name:
        print(temp)
    del movie_name[2]
    print('--------删除之后---------')
    for temp in movie_name:
        print(temp)
    
    

    上述案例中,第1~4行创建了一个包含6个元素的列表 movie_name,并使用for循环遍历输出列表的元素,第5行使用del 语句删除了movie_name列表中索引为2的元素,并在第7-8行再次输出movie_name全部的元素。
    列表删除前与删除后的结果运行如下:
    小脆筒style

    2,使用 pop 方法可以删除列表元素

    使用pop 方法可以删除列表中的最后一个元素。

    案例如下:

    movie_name = ['加勒比海盗', '骇客帝国', '第一滴血', '指环王', '霍比特人', '速度与激情']
    print("------------删除之前---------")
    for temp in movie_name:
        print(temp)
    movie_name.pop()
    print("--------删除之后-----------")
    for temp in movie_name:
        print(temp)
    
    
    

    上述案例,第1~4行创建了一个包含6个元素的列表movie_name,并使用for循环遍历输出列表的元素。
    第5行调用pop方法删除了movie_name列表中最后一个元素,并在第7~8行再次输出全部的元素。
    列表删除前与删除后的 运行结果如下:

    小脆筒style

    3, 使用remove方法删除列表元素

    使用remove方法可以删除列表的指定元素。
    通过下列案例演示:

    movie_name = ['加勒比海盗','骇客帝国','第一滴血','指环王','霍比特人','速度与激情']
    print("----------删除之前----------")
    for temp in movie_name:
        print(temp)
    movie_name.remove('指环王')
    print("-----------删除之后-----------")
    for temp in movie_name:
        print(temp)
    
    
    

    上述案例,第1~4行创建了一个包含6个元素的列表movie_name,并使用for循环遍历输出列表的元素。
    在第5行调用remove方法删除了movie_name列表中的“指环王”元素,并在第7~8行再次输出全部的元素。
    删除前与删除后运行结果如下:
    小脆筒style
    补充:使用remove 一次只能删除一个元素,默认删除第一个

    展开全文
  • 1.Python3中对列表删除三种方式 2.列表的正序遍历与倒序遍历过程的分析 3.删除列表中多个相同元素方法



    1. 删除列表(list)的三种方式


    (1).按照元素删除—remove()

    • 直接删除具体某个元素,remove里面传递的是元素的值
    • 从最左边开始寻找第一个符合要求的元素
    • remove函数没有结果返回
    • 如果没有对应的元素,则抛出错误
    
    my_list = [1, 2, 3, 4, 2, 5]
    my_list.remove(2)
    print(my_list)
    
    
    # 结果
    [1, 3, 4, 2, 5]
    
    

    
    my_list = [1, 2, 3, 4, 2, 5]
    my_list.remove(6)				# 没有元素6,最终会抛出异常
    print(my_list)
    
    
    # 结果
    Traceback (most recent call last):
      File "/Users/alien_test.py", line 58, in <module>
        my_list.remove(6)
    ValueError: list.remove(x): x not in list
    
    

    (2).按照索引删除—pop()

    • 根据索引删除某个元素
    • pop执行完会返回对应元素的值
    • pip()中如果不传递索引,则删除最后一位元素
    • pop删除的索引,如果越界会抛出异常
    # 根据索引删除元素
    
    my_list = [1, 2, 3, 4, 2, 5]
    item = my_list.pop(1)
    print(my_list)
    print(item)
    
    
    # 结果
    [1, 3, 4, 2, 5]
    2		# 元素2是对应索引为1的值
    
    

    # 删除最后一个元素
    
    my_list = [1, 2, 3, 4, 2, 5]
    item = my_list.pop()
    print(my_list)
    print(item)
    
    
    # 最终结果 
    [1, 2, 3, 4, 2]
    5
    
    

    # 越界抛出异常
    
    my_list = [1, 2, 3, 4, 2, 5]
    item = my_list.pop(8)
    print(my_list)
    print(item)
    
    
    # 结果
    Traceback (most recent call last):
      File "/Users/test/alien_test.py", line 58, in <module>
        item = my_list.pop(8)
    IndexError: pop index out of range
    
    

    (3).按照索引删除—del()

    • 根据索引删除,最终结果没有返回值
    • 索引越界抛出异常
    
    my_list = [1, 2, 3, 4, 2, 5]
    
    del my_list[1]      #等同于 del(my_list[1])
    print(my_list)
    
    
    # 结果
    [1, 3, 4, 2, 5]
    
    

    
    my_list = [1, 2, 3, 4, 2, 5]
    del my_list[8]
    print(my_list)
    
    
    # 异常结果
    Traceback (most recent call last):
      File "/Users/test/alien_test.py", line 58, in <module>
        del my_list[8]
    IndexError: list assignment index out of range
    
    


    2. 删除元素引发的思考


    (1).事故发生现场

    【case 1:】

    
    my_list = [1, 2, 2, 3, 2]
    for item in my_list:
        if item == 2:
            my_list.remove(item)
    print(my_list)
    
    
    # [1, 3, 2]
    
    

    【case 2:】

    
    my_list = [1, 2, 2, 3, 2]
    for index in range(len(my_list)):
        if my_list[index] == 2:
            my_list.pop(index)
    print(my_list)
    
    
    
    # 结果
    
    Traceback (most recent call last):
      File "/Users/test/alien_test.py", line 59, in <module>
        if my_list[index] == 2:
    IndexError: list index out of range
    
    


    (2).列表----正序遍历的过程分析

    
    my_list = [1, 2, 2, 3, 2]
    for item in my_list:
        print("item-------->", item)
        if item == 2:
            my_list.remove(item)
    print(my_list)
    
    
    # 结果:
    
    item--------> 1
    item--------> 2
    item--------> 3
    item--------> 2
    [1, 3, 2]
    
    

    【分析过程:】

    • 如上过程,发现for循环的过程居然没有遍历所有的元素,打印的结果少一个索引位置为2的元素2
    • 具体原因是,for循环的时候,列表的元素是动态变化的。具体可参考如下过程


    step1:列表的遍历过程如下
    在这里插入图片描述

    列表的遍历是通过游标来控制列表的位置,从索引为0号位一直到最后一个位置,依次遍历



    step2:列表的删除某个元素流程如下

    在这里插入图片描述

    当遍历到索引为1的位置时候,准备删除这个位置元素

    在这里插入图片描述

    • 删除完index=1这个元素之后,紧接着index=2的元素会向左移动到原始index=1的位置。此时,游标已经在index=1的位置。
    • 下一次再遍历的时候,游标会自增1,变为从index=2开始。而此时index=2的元素是3,跳过了原始的index=2的元素2。
    • 所以,如果有连续的相同的元素2,则会少遍历一次这个元素。如上2个案例,都是这个原因导致的问题。


    (3).列表----倒序遍历的过程分析

    
    my_list = [1, 2, 2, 3, 2]
    for index in range(len(my_list) - 1, -1, -1):
        item = my_list[index]
        print("item-------->", index, "--->", item)
        if item == 2:
            my_list.pop(index)
    print(my_list)
    
    
    # 结果
    item--------> 4 ---> 2
    item--------> 3 ---> 3
    item--------> 2 ---> 2
    item--------> 1 ---> 2
    item--------> 0 ---> 1
    
    
    [1, 3]
    
    

    1.通过倒序的遍历,可以把所有的2元素都删除了,倒序为什么能解决如上的问题?
    2.倒序也会出现删除的元素的位置,被新元素占用的情况?



    step1:列表倒序的遍历过程如下

    在这里插入图片描述



    step2:列表的删除某个元素流程如下

    在这里插入图片描述

    当遍历到索引为4的位置时候,准备删除这个位置元素

    在这里插入图片描述

    • 删除完索引index=4的元素之后
    • 下一个遍历的索引是index=3,此时游标在index=3的位置,从元素3开始再遍历
    • 当删除index=2的元素2的时候,因为这个元素前面的所有索引的位置都没有变动,所以再下一次,还能遍历到index=1的第一个2
    • 最终,倒序最大的优势是,从后往前遍历,而前面所有元素的索引是没有变动的,固后续的遍历过程没有受是否删除元素的影响。这个是倒序最核心的优势!!!


    3. 删除列表中重复的元素


    (1).根据索引删除—(如上倒序的方式)

    
    my_list = [1, 2, 2, 3, 2]
    for index in range(len(my_list) - 1, -1, -1):
        item = my_list[index]
        print("item-------->", index, "--->", item)
        if item == 2:
            my_list.pop(index)
    print(my_list)
    
    

    (2).根据元素删除—(结果正确,但是过程是错误)

    
    my_list = [1, 2, 2, 3, 2]
    for index in range(len(my_list) - 1, -1, -1):
        item = my_list[index]
        print("item-------->", index, "--->", item)
        if item == 2:
            my_list.remove(item)
            print("--->", my_list)
    print(my_list)
    
    
    # 结果
    
    item--------> 4 ---> 2
    ---> [1, 2, 3, 2]				# 此处倒序遍历,其实删除的是从左向右的第一个元素2
    
    item--------> 3 ---> 2
    ---> [1, 3, 2]					# 此除遍历的是第二个2,删除的也是第二个元素
    
    
    item--------> 2 ---> 2
    ---> [1, 3]						# 次数遍历的是最后一个2,删除的也是这个元素
    
    item--------> 1 ---> 3
    item--------> 0 ---> 1
    
    [1, 3]
    
    

    如上的方式不好的地方是:

    • 倒序遍历了,但是最终删除的元素是从左向右排序的元素。如果出现多个相同的元素,则删除的不是当前遍历到的元素。
    • 次方法, 慎重使用!!!
    展开全文
  • Python中列表删除元素三种方法:remove、del和pop

    Python中列表删除元素的方法有:

    • remove
    • del
    • pop

    remove

    指定要删除的元素的值,如果该元素在列表中出现多次,则删除第一个。

    lst = [14, 13, 18, 14, 15, 22]
    lst.remove(14)
    print(lst)
    [13, 18, 14, 15, 22]
    

    del

    指定要删除的元素的索引值,该方法可以将该元素从内存中删除。

    lst = [14, 13, 18, 14, 15, 22]
    del lst[1]
    print(lst)
    [14, 18, 14, 15, 22]
    

    pop

    该方法默认删除列表中的最后一个元素

    lst = [14, 13, 18, 14, 15, 22]
    lst.pop()
    print(lst)
    [14, 13, 18, 14, 15]
    

    如果要删除具体位置上的元素,需指定要删除的元素的索引值

    lst = [14, 13, 18, 14, 15, 22]
    lst.pop(2)
    print(lst)
    [14, 13, 14, 15, 22]
    
    展开全文
  • python列表删除重复元素三种方法

    千次阅读 多人点赞 2020-09-27 14:18:06
    方法1,对列表调用排序,从末尾依次比较相邻两个元素,遇重复元素删除,否则指针左移一位重复上述过程: def deleteDuplicatedElementFromList(list): list.sort(); print("sorted list:%s" % list) length = ...
  • python中关于删除list中的某个元素,一般有三种方法:remove、pop、delremove:删除单个元素,其只能删除首个符合条件的元素,按值来进行删除In [41]: list1 = [1 , 2 , 3 , 4 , 5 , 6 , 2 , 4 , 3]In [42]: list1....
  • 1、使用del语句删除元素 >>> i1 = ["a",'b','c','d'] >>> del i1[0] >>> print(i1) ['b', 'c', 'd'] >>> del语句将值从列表中删除后,就再也无法访问它了。 2、使用pop()删除元素  pop()可删除列表末尾的...
  • Python三种方法删除列表中的元素

    万次阅读 多人点赞 2018-01-20 12:57:10
    方法一、用remove("")方法删除指定元素,没有该元素时报错; >>> number=[1,3,2,0] >>> number.remove(1)#删除指定元素1,这里是int类型因此不需要引号 >>> print(number) [3, 2, 0] 方法二、利用del[索引数...
  •  删除列表指定位置的元素。本质上是数组的拷贝,id(a)的地址不变。 1 >>> a = [100,200,888,300,400] 2 3 >>> del a[2] 4 5 >>> a 6 7 [100, 200, 300, 400] 二:pop()方法  ...
  • #删除第3个元素,del是delete的缩写 del names[2] #再次打印会发生王五不见了 print(names) 注意del是一个关键词,而不是一个函数所以不是使用小括号:del(names[2]),而是使用空格:del names[2] 删除报错 根据...
  • Python基础--list列表删除元素

    千次阅读 2020-12-03 21:55:11
    列表删除元素主要分为以下 3 场景:根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法;根据元素本身的值进行删除,可使用列表(list类型)提供的 remove() 方法;将列表中所有元素全部...
  • 对这些基础掌握不好,过来回顾一下使用del语句删除lis = [1, 2, 3, 'a', 'b']print(lis)del lis[0]print(lis)输出[1, 2, 3, 'a', 'b'][2, 3, 'a', 'b']使用del语句可以删除任何位置处的列表元素,条件是知道索引如要...
  • 小白一枚,有错请指正,勿喷python列表删除元素方法:del、pop、remove用法和区别都看明白了,那么问题来了,到底怎么选,排除其他各种目的,我只从效率角度思考,所以写了一段无聊至极的代码(在列表、元组、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 262,717
精华内容 105,086
关键字:

列表删除元素的三种方法