• 猿创征文|List 列表(创建、索引和切片、列表反转、添加删除修改查找元素)__全实例详解(四)


    《  Python List列表全实例详解系列(四)》

    __列表删除元素(4种方法)删除重复元素(去重)(8种方法)

    我的技术成长&学习资料整理分享之路

      我遇到问题查找资料时,经常会发现打开的文章10篇中有9篇基本是一样的,费时费力,于是萌生了分享整理好的资料的念头。

      2022年5月开启了我的第一个也是唯一的一个博客:https://blog.csdn.net/weixin_69553582?type=blog,博客名:逆境清醒。

      我的博客文章不多,39篇,但大多数都是1万字左右认真整理的学习经验资料。

      我没有向任何人推我的博客,点赞收藏全凭文章阅读者自己判断是否有用:

    ecbcd24a056a47709a75da909bb211c1.png

    970bc2bbee7d47199a43fa9687ace5ec.png

    ad7f490bc9be49109263231405170efb.png

    1dde1aea83924eb4b103df5866198cba.png

    8cdbf1fe3b5e45c3810eff98229f616b.png

      评论不多,但每一个都是发自自愿的评论,给了我文章的肯定。这就是我在自己学习过程中分享学习资料的意义。让我开始写《 Python List列表全实例详解系列》。现在这篇《 Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素(去重)(8种方法)就是其中一篇。

       在编程开发中,我们经常会踩坑,以为代码没有错,可结果往往出乎我们意料。

      发生这种bug的原因在于我们对基础知识掌握不够全面,理解不透彻。

      例如,我们用listname.remove(i)删除2列表时,

      当重复的数据都是不相邻的情况下,使用一般的remove()代码循环就能够达到预期的删除效果。

    mlist=[3,2,3,8,3,2,5]

    print("原列表是:",mlist)

    for i in mlist:

        if i==3:

            mlist.remove(i)

    print("删除重复数3后的列表是:",mlist)

    运行结果

    原列表是: [3, 2, 3, 8, 3, 2, 5]

    删除重复数3后的列表是: [2, 8, 2, 5]

      当重复的数据当中有重复数据是相邻的情况下,有的时候只能删除部分重复元素,不能达到我们想要的删除所有重复元素的效果,这时需要在代码当中添加一些判断。

    mlist=[3,2,3,3,8,2,5]

    print("原列表是:",mlist)

    for i in mlist:

        if i==3:

            mlist.remove(i)

    print("删除重复数3后的列表是:",mlist)

    运行结果

    原列表是: [3, 2, 3, 3, 8, 2, 5]

    删除重复数3后的列表是: [2, 3, 8, 2, 5]

    解释: 运行结果还有重复数3未能删除,说明代码需要改进。

      在列表的for循环过程中,删除一个元素将使所有后续元素向左移动一个位置,而i却是在最初就已经确定了,因此在下一次迭代中,一个元素将被跳过,普通操作并不能得到想要的结果(remove()清空列表)。for语句正序使用remove()不能清空列表,注意不要踩坑。

      下面让我们一起学习一下list列表删除相关的知识吧

     接上一篇:《 Python List 列表全实例详解系列(三)》__列表添加元素(4种方法)

    fb5bd020199c48fdaab061f9843f77a6.gif

             本篇目录:

    六、list 列表删除元素(4种方法)

    (6.1)、del 根据索引值删除元素

    (6.2)、pop() 根据索引值删除元素

    (6.3)、remove() 根据元素值进行删除元素

    (6.4)、clear() 删除列表所有元素

    七、删除列表中重复的元素的方法

    ①方法一:使用set()函数去重

    ②方法二:使用list()+set()函数的方式

    ③方法三:使用count()函数和remove()函数去重

    ④方法四:使用列表推导的方式去重

    ⑤方法五:使用列表倒序remove方式去重

    ⑥方法六:使用while方式去重

    ⑦方法七:使用fromkeys()函数方式去重

    ⑧方法八:使用drop_duplicates()方法处理重复值去重

    八、删除列表中的空值元素

    方法一:使用while循环的的方式

    方法二:抽取非空的列表元素,存储到新的列表中

    方法三:通过count()计算空值元素个数,再遍历列表删除

     f3751a45350f4910835ba888fb79118a.gif


    六、list 列表删除元素(4种方法)

    要将元素从列表中删除,处理方法有以下几种:

      (1)、根据元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法;

      (2)、根据元素本身的值进行删除,可使用列表(list类型)提供的 remove() 方法;

      (3)、将列表中所有元素全部删除,可使用列表(list类型)提供的 clear() 方法。

    (6.1)、del 根据索引值删除元素

      del 根据索引值删除元素

      del 用来执行删除操作,它不仅可以删除整个列表,还可以删除列表中的某些元素。del 是 Python 中的关键字。

    删除列表中的单个元素

    语  法

    del listname[index]

    参  数

    其中,listname 表示列表名称,index 表示元素的索引值。

    删除中间一段连续的元素

    语  法

    del listname[start : end]

    参  数

      start 表示起始索引,end 表示结束索引。

      del 会删除从索引 start 到 end 之间的元素,不包括 end 位置的元素(左闭右开,含头不含尾。)。

    对于已经创建的列表,如果不再使用,可以使用del关键字将其删除

    语  法

    del listname

    参  数

    listname 表示要删除列表的名称

    注  意

    知识拓展

    实 例

    删除列表前:

    d4c01f5f81fd4e2ba5eddd5d6e66007e.png

    删除列表中索引为4的元素后:

    787b4951e8be47ba9d64a7ae68e64a8f.png

    代  码

    代码解释:使用正数索引,从小动物列表元素中删掉"大灰狼"

    代码解释: del mlist[4]删除第4个元素

    mlist= ["小猫咪", "小白兔", "小青蛙", "小狗狗", "大灰狼", "小鸟"]

    print(mlist)

    del mlist[4]

    print(mlist)

    运行结果

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '大灰狼', '小鸟']

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '小鸟']

    删除列表前:

    5d3baa4586464bf78e79dd255d8211c7.png

    删除列表中索引为-2的元素后:

    fc2e618a9ed944fbbbf640b6698c5e42.png

    代  码

    代码解释:使用负数索引,从小动物列表元素中删掉"大灰狼"

    代码解释: del mlist[4]删除倒数第2个元素

    mlist= ["小猫咪", "小白兔", "小青蛙", "小狗狗", "大灰狼", "小鸟"]

    print(mlist)

    del mlist[-2]

    print(mlist)

    运行结果

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '大灰狼', '小鸟']

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '小鸟']

    945092907f5f4988ade18d6e46eb968d.png

    代  码

    代码解释: del mlist[4: 9] 删除从第4个元素开始,到第9个为止的元素。

    mlist =["萤火明晰双眼","辨分真与假",'逆境清醒','Adversity Awake',[5,6,7],6.139,0,-1,'@y','Awake']

    print(mlist)

    del mlist[4: 9]

    print(mlist)

    运行结果

    ['萤火明晰双眼', '辨分真与假', '逆境清醒', 'Adversity Awake', [5, 6, 7], 6.139,0, -1, '@y', 'Awake']

    ['萤火明晰双眼', '辨分真与假', '逆境清醒', 'Adversity Awake', 'Awake']

    575a0ebd2404449ba0f31653f984104f.png

    代  码

    代码解释:del mlist[-6: -1] 删除从倒数第6个元素开始,到倒数第1个为止的元素。

    mlist =["萤火明晰双眼","辨分真与假",'逆境清醒','Adversity Awake', [5,6,7], 6.139,0,-1,'@y','Awake']

    del mlist[-6: -1]

    print(mlist)

    运行结果

    ['萤火明晰双眼', '辨分真与假', '逆境清醒', 'Adversity Awake', [5, 6, 7], 6.139,0, -1, '@y', 'Awake']

    ['萤火明晰双眼', '辨分真与假', '逆境清醒', 'Adversity Awake', 'Awake']

    代码解释:mlist[0: -9]中-9超出边界,原列表不会有元素被删除

    代  码

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    del mlist[0: -9]

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    代码解释:列表负索引是从-1开始的,mlist[-4: 0]超出边界,原列表不会有元素被删除

    代  码

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    del mlist[-4: 0]

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    代码解释:del mlist[0: 0],从第0个元素开始,到第0个为止的元素,不存在,原列表不会有元素被删除

    代  码

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    del mlist[0: 0]

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    代码解释:del mlist[0:3],删除从第0个元素开始,到第3个为止的元素

    代  码

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    del mlist[0:3]

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[1, 8], [3, 4], [1, 6]]

    代码解释:del mlist[:] 删除整个mlist

    代  码

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    del mlist[:]

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    []

    代  码

    代码解释:删除整个mlist

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    del mlist

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    代  码

    代码解释: 删除列表,删除列表后再打印会出错,因为del mlist删除列表的同时会删除变量名称mlist

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    del mlist

    print(mlist)

    运行结果

    Traceback (most recent call last):

      。。。

        print(mlist)

    NameError: name 'mlist' is not defined

    代  码

    运行结果

    (6.2)、pop() 根据索引值删除元素

    pop() 根据索引值删除元素

    pop() 方法用来删除列表中指定索引处的元素

    语  法

    listname.pop(index),list.pop([i])

    参  数

    listname 表示列表名称,index 表示索引值。

    list.pop([i])中的i是列表中元素的索引值,这个i用方括号包裹起来,意味着还可以不写任何索引值,就是删除列表的最后一个。

    注  意

    1、如果不写 index 参数,默认会删除列表中的最后一个元素,类似于数据结构中的“出栈”操作。

    2、对pop方法传入一个索引,则会删除目标索引处的数值。

    3、从末尾删除的话可以使用负索引。

    4、第一个元素的索引为0。

    返 回 值

    知识拓展

      一般编程语言都会提供和 pop() 相对应的方法,就是 push(),用来将元素添加到列表的尾部,即 “入栈”操作。

      Python 并没有提供 push() 方法,但可以使用 append() 来代替 push() 的功能。

    实 例

    删除列表前:

    1537d258cd1245658025fcc03bbe6ed5.png

    删除列表中索引为4的元素后:

    511fa15d822e4574bdf2db4f7be5aaa6.png

    代  码

    代码解释:使用正数索引

    mlist= ["小猫咪", "小白兔", "小青蛙", "小狗狗", "大灰狼", "小鸟"]

    print(mlist)

    mlist.pop(4)

    print(mlist)

    运行结果

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '大灰狼', '小鸟']

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '小鸟']

    删除列表前:

    9c39e04556de41bcb5a762d1b11eb505.png

    删除列表中索引为-2的元素后:

    7f5463dee8a14fb29ad4118763a816b8.png

    代  码

    代码解释:使用负数索引,从小动物列表元素中删掉"大灰狼"

    mlist= ["小猫咪", "小白兔", "小青蛙", "小狗狗", "大灰狼", "小鸟"]

    print(mlist)

    mlist.pop(-2)

    print(mlist)

    运行结果

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '大灰狼', '小鸟']

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '小鸟']

    删除列表前:

    274e2309410f430f832ff65f709dac59.png

    删除列表中索引为0的元素后:

    d79bf349ba63426db1e1d8c75f670538.png

    代  码

    代码解释:删除列表中索引为0的元素

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    mlist.pop(0)

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    删除列表前:

    24b54e741beb4c3daee2970591fa9ee4.png

    删除列表中索引为1的元素后:

    bbdb213075a143469752b99c02c6cfd6.png

    代  码

    代码解释:删除列表中索引为1的元素

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    mlist.pop(1)

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[2, 9], [6, 9], [1, 8], [3, 4], [1, 6]]

    删除列表前:

    aa3aa9d9036341a295094bfef903a833.png

    删除列表中索引为5的元素后:

    b7c85e053ae648c0a8352ee06462807c.png

    代  码

    代码解释:删除列表中索引为5的元素

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    mlist.pop(5)

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4]]

     删除列表前:

    aa3aa9d9036341a295094bfef903a833.png

    代  码

    代码解释:删除列表中索引为6的元素,列表索引边界为5,6超出索引边界

    代码解释:.pop(index),index的值不能超出边界,否则会出错

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    mlist.pop(6)

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    。。。

        mlist.pop(6)

    IndexError: pop index out of range

    删除列表前:

    ab80c20242cf4bb095ccbe16c6547de6.png

    删除列表中索引为-6的元素后:

    9e2459ee833c46a4a041922923be5959.png

    代  码

    代码解释:删除列表中索引为-6的元素
    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    mlist.pop(-6)

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    删除列表前:

    1596260d507a42b68b02033a9c3997f3.png

    删除列表中索引为-1的元素后:

    e76f8cc67d0041048d741747abe43633.png

    代  码

    代码解释:删除列表中索引为-1的元素

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    mlist.pop(-1)

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4]]

    删除列表前:

    447d5bc61b3b44ccbdb5fcacff95bffe.png

    删除mlist.pop()的元素后:

    c4d0b00a984f4367b55678c04e1d351b.png

    代  码

    代码解释: 如果不写 index 参数,默认会删除列表中的最后一个元素,类似于数据结构中的“出栈”操作

    mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]]

    print(mlist)

    mlist.pop()

    print(mlist)

    运行结果

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]]

    [[2, 9], [7, 0], [6, 9], [1, 8], [3, 4]]

    删除列表前:

    add3f0e2627a457cab984eec70a9615c.png

    删除mlist.pop(3)的元素后:

    0bce6735772b4ae0abecaefc9c9c66dd.png

    代  码

    代码解释:pop(index)返回从列表中移除的对象

    mlist = ['莲蓉月饼', '豆沙月饼', '五仁月饼', '过期月饼','水果月饼', '冰皮月饼', '冰淇淋月饼'];

    print("不要的月饼: ", mlist.pop(3))

    运行结果

    不要的月饼:  过期月饼

    代  码

    运行结果

    (6.3)、remove() 根据元素值进行删除元素

    remove() 根据元素值进行删除

    该方法会根据元素本身的值来进行删除操作。

    语  法

    listname.remove(value)

    参  数

    listname 表示列表名称,value表示值。

    注  意

      1、remove() 方法只会删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会引发 ValueError 错误。所以我们在使用 remove() 删除元素时最好提前判断一下。

      2、在列表的for循环过程中,删除一个元素将使所有后续元素向左移动一个位置,而i却是在最初就已经确定了,因此在下一次迭代中,一个元素将被跳过,普通操作并不能得到想要的结果。

    返 回 值

    知识拓展

      1、for语句正序使用remove()不能清空列表,注意不要踩坑。

      2、实际应用当中有时可能需要删除列表中某一大量重复的数据,当重复的数据都是不相邻的情况下,使用一般的remove()代码循环就能够达到预期的删除效果。

      但当重复的数据当中有重复数据是相邻的情况下,有的时候只能删除部分重复元素,不能达到我们想要的删除所有重复元素的效果,这时需要在代码当中添加一些判断。详细见实例部分代码

    实 例

    删除列表前:

    a6df296d448447baafb5ccea6287296c.png

    删除mlist.pop(3)的元素后:

    bfb9f185603d48f383345746129be096.png

    代  码

    代码解释:使用remove(),从小动物列表元素中删掉"大灰狼"

    mlist= ["小猫咪", "小白兔", "小青蛙", "小狗狗", "大灰狼", "小鸟"]

    mlist.remove("大灰狼")

    print(mlist)

    运行结果

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '大灰狼', '小鸟']

    ['小猫咪', '小白兔', '小青蛙', '小狗狗', '小鸟']

    代  码

    代码解释: remove()只能删除指定值的列表元素或者第一个元素,如果列表中有两个相同的值,只会删除第一个,如果要清除列表中其他具有相同的值,就必须多次执行remove()

    mlist= [4, 7, 7, 1, 9, 5, 2, 6]

    print(mlist)

    代码解释:第一次删除7

    mlist.remove(7)

    print(mlist)

    代码解释:第二次删除7

    mlist.remove(7)

    print(mlist)

    运行结果

    [4, 7, 7, 1, 9, 5, 2, 6]

    [4, 7, 1, 9, 5, 2, 6]

    [4, 1, 9, 5, 2, 6]

    代  码

    代码解释:remove(),如果元素不存在,会返回ValueError错误

    mlist= [4, 7, 7, 1, 9, 5, 2, 6]

    mlist.remove(100)

    运行结果

    Traceback (most recent call last):

    。。。

        mlist.remove(100)

    ValueError: list.remove(x): x not in list

    代  码

    代码解释:当重复的数据都是不相邻的情况下,使用一般的remove()代码循环就能够达到预期的删除效果。

    mlist=[3,2,3,8,3,2,5]

    print("原列表是:",mlist)

    for i in mlist:

        if i==3:

            mlist.remove(i)

    print("删除重复数3后的列表是:",mlist)

    运行结果

    原列表是: [3, 2, 3, 8, 3, 2, 5]

    删除重复数3后的列表是: [2, 8, 2, 5]

    代  码

    代码解释:当重复的数据当中有重复数据是相邻的情况下,有的时候只能删除部分重复元素,不能达到我们想要的删除所有重复元素的效果,这时需要在代码当中添加一些判断。

    mlist=[3,2,3,3,8,2,5]

    print("原列表是:",mlist)

    for i in mlist:

        if i==3:

            mlist.remove(i)

    print("删除重复数3后的列表是:",mlist)

    运行结果

    原列表是: [3, 2, 3, 3, 8, 2, 5]

    删除重复数3后的列表是: [2, 3, 8, 2, 5]

    解释: 运行结果还有重复数3未能删除,说明代码需要改进。

    代  码

    代码解释:倒序后,能够正常得到结果的程序代码

    mlist=[3,2,3,3,8,2,5]

    print("原列表是:",mlist)

    for i,item in enumerate(mlist[::-1]):

        if item==3:

            mlist.remove(item)

    print("删除重复数3后的列表是:",mlist)

    运行结果

    原列表是: [3, 2, 3, 3, 8, 2, 5]

    删除重复数3后的列表是: [2, 8, 2, 5]

    代  码

    代码解释:在原列表中筛选大于28的数据组成列表,不符合要求的数据删除。此代码不能达到我们想要的效果。

    mlist=[48,92,28,28,43,23,83,25,28]

    print("原列表是:",mlist)

    for i in mlist:

      if i>28:

        pass

      else:

        mlist.remove(i)

    print("筛选大于28的数据组成的列表是:",mlist)

    运行结果

    原列表是: [48, 92, 28, 28, 43, 23, 83, 25, 28]

    筛选大于28的数据组成的列表是: [48, 92, 28, 43, 83, 28]

    解释: 运行结果还有重复数28未能全部筛选删除,说明代码需要改进。

    代  码

    代码解释:在原列表中筛选大于28的数据组成列表,不符合要求的数据删除。倒序后,能够正常得到结果的程序代码

    mlist=[48,92,28,28,43,23,83,25,28]

    print("原列表是:",mlist)

    for i in mlist[:]:

      if i>28:

        pass

      else:

        mlist.remove(i)

    print("筛选大于28的数据组成的列表是:",mlist)

    运行结果

    原列表是: [48, 92, 28, 28, 43, 23, 83, 25, 28]

    筛选大于28的数据组成的列表是: [48, 92, 43, 83]

    代  码

    代码解释:for语句正序使用remove()不能清空列表,注意不要踩坑

    mlist = [1,2,3,4,5,6,7,8]

    for i in mlist:

        mlist.remove(i)

    print(mlist)

    运行结果

    [2, 4, 6, 8]

    代  码

    代码解释:清空列表方法1

    mlist = [1,2,3,4,5,6,7,8]

    while i:=len(mlist):

        mlist.remove(i)

        i-=i

    print(mlist)

    运行结果

    []

    代  码

    代码解释:清空列表方法2

    mlist = [1,2,3,4,5,6,7,8]

    for i in mlist.copy():

        mlist.remove(i)

    print(mlist)

    运行结果

    []

    代  码

    代码解释:清空列表方法3

    mlist = [1,2,3,4,5,6,7,8]

    for i in mlist[:]:

        mlist.remove(i)

    print(mlist)

    运行结果

    []

    代  码

    代码解释:清空列表方法4

    mlist = [1,2,3,4,5,6,7,8]

    for i in mlist [::-1]:

        mlist.remove(i)

    print(mlist)

    运行结果

    []

    代  码

    运行结果

    (6.4)、clear() 删除列表所有元素

    clear() 删除列表所有元素

    用来删除列表的所有元素,也即清空列表

    语  法

    listname.clear()

    参  数

    listname 表示列表名称。

    注  意

    返 回 值

    知识拓展

    实 例

    代  码

    代码解释:删除列表所有的数字元素

    mlist= [4, 7, 7, 1, 9, 5, 2, 6]

    print(mlist)

    mlist.clear()

    print(mlist)

    运行结果

    [4, 7, 7, 1, 9, 5, 2, 6]

    []

    代  码

    代码解释:删除列表所有的字符串元素,清空列表

    heianlist1 = ['黑暗', '邪恶', '阴险', '毒辣','不开心','难过','误会','自私','分离','死亡']

    print("原来的heianlist1是:",heianlist1)

    heianlist1.clear()

    print("现在的heianlist1是:",heianlist1)

    sundaylist=['温暖','友爱','关心','体贴','爱护','善良','尊重','健康']

    print("现在的sundaylist是:",sundaylist)

    print("sundaylist里还需要补充元素,你愿意吗?")

    运行结果

    原来的heianlist1是: ['黑暗', '邪恶', '阴险', '毒辣', '不开心', '难过', '误会', '自私', '分离', '死亡']

    现在的heianlist1是: []

    现在的sundaylist是: ['温暖', '友爱', '关心', '体贴', '爱护', '善良', '尊重', '健康']

    sundaylist里还需要补充元素,你愿意吗?

    代  码

    代码解释:当列表为空列表时,执行clear()删除列表所有元素,清空列表

    mlist= []
    print("原来的mlist是:",mlist)
    mlist.clear()
    print("现在的mlist是:",mlist)

    运行结果

    原来的mlist是: []
    现在的mlist是: []

    代  码

    运行结果

    七、删除列表中重复的元素的方法

    ①方法一:使用set()函数去重

    利用 set()函数 中的元素不可重复的特性去重

    去重后类型会发生改变,是无序set,所以每次顺序不一致,都会变

    实 例

    代  码

    mlist= [4, 7, 7, 1, 9, 5, 2, 6,5]

    print(mlist)

    print(set(mlist))

    运行结果

    [4, 7, 7, 1, 9, 5, 2, 6, 5]
    {1, 2, 4, 5, 6, 7, 9}

    输出结果为 {1, 2, 4, 5, 6, 7, 9}

    类型发生改变,无序set,所以每次顺序都会变,顺序不一致

    代  码

    mlist= ['交友之道','逆境清醒','先淡后浓','先淡后浓','先疏后亲','先远后近','交友之道']

    print(mlist)

    print(set(mlist))

    print(type(set(mlist)))

    运行结果

    ['交友之道', '逆境清醒', '先淡后浓', '先淡后浓', '先疏后亲', '先远后近', '交友之道']

    {'交友之道', '先远后近', '先淡后浓', '先疏后亲', '逆境清醒'}

    代  码

    mlist= ['交友之道','逆境清醒','先淡后浓','先淡后浓','先疏后亲','先远后近','交友之道']

    print(mlist)

    print(set(mlist))

    print(type(set(mlist)))

    运行结果

    ['交友之道', '逆境清醒', '先淡后浓', '先淡后浓', '先疏后亲', '先远后近', '交友之道']

    {'交友之道', '逆境清醒', '先淡后浓', '先远后近', '先疏后亲'}

    ②方法二:使用list()+set()函数的方式

    利用 set()函数 中的元素不可重复的特性去重,再把set类型强转成list类型。

    去重后类型类型不改变,每次顺序不一致,都会变。

    实 例

    代  码

    mlist= [4, 7, 7, 1, 9, 5, 2, 6,5]

    print(mlist)

    print(list(set(mlist)))

    print(type(list(set(mlist))))

    运行结果

    [4, 7, 7, 1, 9, 5, 2, 6, 5]

    [1, 2, 4, 5, 6, 7, 9]

    输出结果为 {1, 2, 4, 5, 6, 7, 9}

    类型不改变,,顺序都会变,顺序不一致

    代  码

    mlist= ['交友之道','逆境清醒','先淡后浓','先淡后浓','先疏后亲','先远后近','交友之道']

    print(mlist)

    print(list(set(mlist)))

    print(type(list(set(mlist))))

    运行结果

    ['交友之道', '逆境清醒', '先淡后浓', '先淡后浓', '先疏后亲', '先远后近', '交友之道']

    ['交友之道', '逆境清醒', '先淡后浓', '先远后近', '先疏后亲']

    代  码

    mlist= ['交友之道','逆境清醒','先淡后浓','先淡后浓','先疏后亲','先远后近','交友之道']

    print(mlist)

    print(list(set(mlist)))

    print(type(list(set(mlist))))

    运行结果

    ['交友之道', '逆境清醒', '先淡后浓', '先淡后浓', '先疏后亲', '先远后近', '交友之道']

    ['交友之道', '先远后近', '先淡后浓', '先疏后亲', '逆境清醒']

    ③方法三:使用count()函数和remove()函数去重

    利用 count()函数统计相同的元素有多少,再用remove()删除相同的去重

    实 例

    代  码

    mlist= [4, 7, 7, 1, 9, 5, 2, 6,5]

    print(mlist)

    n = 0

    while n < len(mlist):

        if mlist.count(mlist[n]) > 1:

            mlist.remove(mlist[n])

            continue

        n += 1

    print(mlist)

    运行结果

    [4, 7, 7, 1, 9, 5, 2, 6, 5]

    [4, 7, 1, 9, 2, 6, 5]

    代  码

    mlist= ['人只有不完美值得歌颂','逆境清醒','爱你孤身走暗巷','爱你不跪的模样','爱你对峙过绝望','不肯哭一场','战吗?','战啊!','爱你破烂的衣裳','却敢堵命运的枪','爱你和我那么像','缺口都一样','一生不借谁的光','缺口都一样','你一样骄傲着那种孤勇','战吗?','战啊!','战吗?','战啊!','以最卑微的梦','致那黑夜中的呜咽与怒吼','致那黑夜中的呜咽与怒吼','谁说站在光里的才算英雄']

    print(mlist)

    print()

    n = 0

    while n < len(mlist):

        if mlist.count(mlist[n]) > 1:

            mlist.remove(mlist[n])

            continue

        n += 1

    print(mlist)

    运行结果

    ['人只有不完美值得歌颂', '逆境清醒', '爱你孤身走暗巷', '爱你不跪的模样', '爱你对峙过绝望', '不肯哭一场', '战吗?', '战啊!', '爱你破烂的衣裳', '却敢堵命运的枪', '爱你和我那么像', '缺口都一样', '一生不借谁的光', '缺口都一样', '你一样骄傲着那种孤勇', '战吗?', '战啊!', '战吗?', '战啊!', '以最卑微的梦', '致那黑夜中的呜咽与怒吼', '致那黑夜中的呜咽与怒吼', '谁说站在光里的才算英雄']
    ['人只有不完美值得歌颂', '逆境清醒', '爱你孤身走暗巷', '爱你不跪的模样', '爱你对峙过绝望', '不肯哭一场', '爱你破烂的衣裳', '却敢堵命运的枪', '爱你和我那么像', '一生不借谁的光', '缺口都一样', '你一样骄傲着那种孤勇', '战吗?', '战啊!', '以最卑微的梦', '致那黑夜中的呜咽与怒吼', '谁说站在光里的才算英雄']
     

    ④方法四:使用for循环方式去重

    列表推导的方式

    实 例

    代  码

    mlist= [4, 7, 7, 1, 9, 5, 2, 6,5]

    print(mlist)

    mlist1 = []

    for i in mlist:

        if i not in mlist1:

            mlist1.append(i)

    print(mlist1)

    运行结果

    [4, 7, 7, 1, 9, 5, 2, 6, 5]

    [4, 7, 1, 9, 5, 2, 6]

    代  码

    mlist= ['逆境清醒','把风云笑看','把山水静观','把花草闲赏','随心随缘','不勉强','不将就','不遗憾','把山水静观','把山水静观','把花草闲赏','随心随缘']

    print(mlist)

    print()

    mlist1 = []

    for i in mlist:

        if i not in mlist1:

            mlist1.append(i)

    print(mlist1)

    运行结果

    ['逆境清醒', '把风云笑看', '把山水静观', '把花草闲赏', '随心随缘', '不勉强', '不将就', '不遗憾', '把山水静观', '把山水静观', '把花草闲赏', '随心随缘']

    ['逆境清醒', '把风云笑看', '把山水静观', '把花草闲赏', '随心随缘', '不勉强', '不将就', '不遗憾']

    ⑤方法五:使用列表倒序remove方式去重

    列表推导的方式

    实 例

    代  码

    mlist= ['交友之道','逆境清醒','先淡后浓','先淡后浓','先疏后亲','先远后近','交友之道','先淡后浓']

    print(mlist)

    '''

    for i in mlist[::-1]:

        #print(mlist.count(i))

        if mlist.count(i)>1:

           mlist.remove(i)

           print(mlist)

    '''

    [mlist.remove(i) for i in mlist[::-1] if mlist.count(i)>1]

    print(mlist)

    运行结果

    ['交友之道', '逆境清醒', '先淡后浓', '先淡后浓', '先疏后亲', '先远后近', '交友之道', '先淡后浓']

    ['逆境清醒', '先疏后亲', '先远后近', '交友之道', '先淡后浓']

    代  码

    mlist= [4, 7, 7, 1, 9, 5, 2, 6,5,7,9,5]

    print(mlist)

    [mlist.remove(i) for i in mlist[::-1] if mlist.count(i)>1]

    print(mlist)

    运行结果

    [4, 7, 7, 1, 9, 5, 2, 6, 5, 7, 9, 5]

    [4, 1, 2, 6, 7, 9, 5]

    ⑥方法六:使用while方式去重

    列表推导的方式

    实 例

    代  码

    mlist= [4,7,7,1,9,5,2,6,5,7,9,5]

    print(mlist)

    for i in mlist:

        while mlist.count(i)>1:

            del mlist[mlist.index(i)]

    print(mlist)

    运行结果

    [4, 7, 7, 1, 9, 5, 2, 6, 5, 7, 9, 5]

    [4, 1, 2, 6, 7, 9, 5]

    ⑦方法七:使用fromkeys()函数方式去重

    fromkeys()函数用于创建一个新字典,

    利用fromkeys()函数keys()属性去重

    实 例

    代  码

    mlist= [4,7,7,1,9,5,2,6,5,7,9,5]

    print(mlist)

    print(list({}.fromkeys(mlist).keys()))

    运行结果

    [4, 7, 7, 1, 9, 5, 2, 6, 5, 7, 9, 5]

    [4, 7, 1, 9, 5, 2, 6]

    ⑧方法八:使用drop_duplicates()方法处理重复值去重

    使用drop_duplicates()方法处理重复值

    dataframe.drop_duplicates(subset=‘列1’) 表示删除dataframe中列1中有重复的值所在的行,并保留重复值中第一行

    实 例

    代  码

    import pandas as pd

    mlist=[['苹果','红色'],['雪梨','黄色'],['苹果','红色'],['雪梨','黄色'],['香蕉','黄色'],['草莓','红色'],['苹果','红色'],['苹果','青色'],['菠萝','黄色']]

    print(mlist)

    mlist=pd.DataFrame(mlist)

    mlist1=mlist.drop_duplicates()

    print(mlist1)

    运行结果

    [['苹果', '红色'], ['雪梨', '黄色'], ['苹果', '红色'], ['雪梨', '黄色'], ['香蕉', '黄色'], ['草莓', '红色'], ['苹果', ' 红色'], ['苹果', '青色'], ['菠萝', '黄色']]

         0     1

    0  苹果  红色

    1  雪梨  黄色

    4  香蕉  黄色

    5  草莓  红色

    7  苹果  青色

    8  菠萝  黄色

    八、删除列表中的空值元素

      实际应用中,列表中可能会有我们不需要的空值元素,为提高列表操作效率,我们有时会选择将列表中的空值元素删除。那怎样才能将列表中的空值元素删除干净呢?

      有几个误区一定要注意避免:

    问题代码1

    代  码

    mlist = ['A','','d','v','e','','','','','','','r','s','i','t','y','','A','w','','','a','k','e']

    print ("清空''前的mlist : ",mlist)

    print("''出现了%d次" % mlist.count(''))

    for i in mlist:

        if i == '':

            mlist.remove(i)

    print ("清空''后的mlist: ",mlist)

    print("''出现了%d次" % mlist.count(''))

    运行结果

    清空''前的mlist :  ['A', '', 'd', 'v', 'e', '', '', '', '', '', '', 'r', 's', 'i', 't', 'y', '', 'A', 'w', '', '', 'a', 'k', 'e']

    ''出现了10次

    清空''后的mlist:  ['A', 'd', 'v', 'e', '', 'r', 's', 'i', 't', 'y', '', 'A', 'w', '', '', 'a', 'k', 'e']

    ''出现了4次

    说明代码有问题,不能全部清除列表当中的空值元素,还有4个空值元素留在列表里。

    问题代码2

    代  码

    mlist = ['A','','d','v','e','','','','','','','r','s','i','t','y','','A','w','','','a','k','e']

    print ("清空''前的mlist : ",mlist)

    print("''出现了%d次" % mlist.count(''))

    for i in mlist:

        if len(i) == 0:

            mlist.remove(i)

    print ("清空''后的mlist: ",mlist)

    print("''出现了%d次" % mlist.count(''))

    运行结果

    清空''前的mlist :  ['A', '', 'd', 'v', 'e', '', '', '', '', '', '', 'r', 's', 'i', 't', 'y', '', 'A', 'w', '', '', 'a', 'k', 'e']

    ''出现了10次

    清空''后的mlist:  ['A', 'd', 'v', 'e', '', 'r', 's', 'i', 't', 'y', '', 'A', 'w', '', '', 'a', 'k', 'e']

    ''出现了4次

      经过查找资料和自己思考,我发现有三种方式可以正确删除列表当中的空值元素,或许还有其他的,如有会更新此部分。

    方法一:使用while循环的的方式

    实 例

    代  码

    mlist = ['A','','d','v','e','','','','','','','r','s','i','t','y','','A','w','','','a','k','e']

    print ("清空''前的mlist : ",mlist)

    print("''出现了%d次" % mlist.count(''))

    while "" in mlist:

        mlist.remove('')

    print ("清空''后的mlist: ",mlist)

    print("''出现了%d次" % mlist.count(''))

    运行结果

    清空''前的mlist :  ['A', '', 'd', 'v', 'e', '', '', '', '', '', '', 'r', 's', 'i', 't', 'y', '', 'A', 'w', '', '', 'a', 'k', 'e']

    ''出现了10次

    清空''后的mlist:  ['A', 'd', 'v', 'e', 'r', 's', 'i', 't', 'y', 'A', 'w', 'a', 'k', 'e']

    ''出现了0次

    通过while循环判断是否有空值元素在列表中,如果有就通过remove删除

    方法二:抽取非空的列表元素,存储到新的列表中

    实 例

    代  码

    mlist = ['A','','d','v','e','','','','','','','r','s','i','t','y','','A','w','','','a','k','e']

    print ("清空''前的mlist : ",mlist)

    print("''出现了%d次" % mlist.count(''))

    mlist1=[i for i in mlist if i != ""]

    print ("清空''后的mlist: ",mlist1)

    print("''出现了%d次" % mlist1.count(''))

    运行结果

    清空''前的mlist :  ['A', '', 'd', 'v', 'e', '', '', '', '', '', '', 'r', 's', 'i', 't', 'y', '', 'A', 'w', '', '', 'a', 'k', 'e']

    ''出现了10次

    清空''后的mlist:  ['A', 'd', 'v', 'e', 'r', 's', 'i', 't', 'y', 'A', 'w', 'a', 'k', 'e']

    ''出现了0次

    先循环遍历有空值的列表,抽取非空的列表元素,存储到新的列表中,新的列表中没有空值元素

    方法三:通过count()计算空值元素个数,再遍历列表删除

    实 例

    代  码

    mlist = ['A','','d','v','e','','','','','','','r','s','i','t','y','','A','w','','','a','k','e']

    print ("清空''前的mlist : ",mlist)

    print("''出现了%d次" % mlist.count(''))

    k=mlist.count('')

    for i in range(k):

        mlist.remove('')

    print ("清空''后的mlist: ",mlist)

    print("''出现了%d次" % mlist.count(''))

    运行结果

    清空''前的mlist :  ['A', '', 'd', 'v', 'e', '', '', '', '', '', '', 'r', 's', 'i', 't', 'y', '', 'A', 'w', '', '', 'a', 'k', 'e']

    ''出现了10次

    清空''后的mlist:  ['A', 'd', 'v', 'e', 'r', 's', 'i', 't', 'y', 'A', 'w', 'a', 'k', 'e']

    ''出现了0次

     请点击下一章查看后续实例详解 ------》

      

        推荐阅读:

    29

    37d6aa3e03e241fa8db72ccdfb8f716b.png

    svg实例详解系列
    28

    6824ba7870344be68efb5c5f4e1dbbcf.png

    查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决

    27

    bba02a1c4617422c9fbccbf5325850d9.png

    原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)更好的向你所喜欢的人表达内心的感受。

    26

    fea225cb9ec14b60b2d1b797dd8278a2.png

    2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子
    25

    1f53fb9c6e8b4482813326affe6a82ff.png

    2023春节祝福系列第一弹(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)
    24

    6176c4061c72430eb100750af6fc4d0e.png

    HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码)

    23

    17b403c4307c4141b8544d02f95ea06c.png

    ​草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码

    22

    5d409c8f397a45c986ca2af7b7e725c9.png

    【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)

    21

    0a4256d5e96d4624bdca36433237080b.png

    ​​

    python爱心源代码集锦
    20

    4d9032c9cdf54f5f9193e45e4532898c.png

    ​​

    巴斯光年python turtle绘图__附源代码
    19

    074cd3c255224c5aa21ff18fdc25053c.png

    ​​​

    Three.js实例详解___旋转的精灵女孩(附完整代码和资源)
    18

    daecd7067e7c45abb875fc7a1a469f23.png

    ​​​​

    ​草莓熊python turtle绘图(玫瑰花版)附源代码

    17

    fe88b78e78694570bf2d850ce83b1f69.png

    ​​​​

    立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦

    16

    c5feeb25880d49c085b808bf4e041c86.png

    ​​​​

    皮卡丘python turtle海龟绘图(电力球版)附源代码

    15

    38266b5036414624875447abd5311e4d.png

    ​​​​

    【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向)

    14

    03ed644f9b1d411ba41c59e0a5bdcc61.png

    ​​​​

    草莓熊python turtle绘图(风车版)附源代码

    13

    09e08f86f127431cbfdfe395aa2f8bc9.png

    ​​​​

    用代码过中秋,python海龟月饼你要不要尝一口?

    12

    40e8b4631e2b486bab2a4ebb5bc9f410.png

    ​​​​

    《 Python List 列表全实例详解系列》__系列总目录

    11

    938bc5a8bb454a41bfe0d4185da845dc.jpeg

    ​​​​

    用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心)

    10

    0f09e73712d149ff90f0048a096596c6.png

    ​​​​

    Python函数方法实例详解全集(更新中...)

    9

    93d65dbd09604c4a8ed2c01df0eebc38.png

    ​​​​

    matplotlib 自带绘图样式效果展示速查(28种,全)

    8

    aa17177aec9b4e5eb19b5d9675302de8.png

    ​​​​

    手机屏幕坏了____怎么把里面的资料导出(18种方法)

    7

    1750390dd9da4b39938a23ab447c6fb6.jpeg

    ​​​​

    2023年2月多家权威机构____编程语言排行榜__薪酬状况

    6

    dc8796ddccbf4aec98ac5d3e09001348.jpeg

    ​​​​

    Python中Print()函数的用法___实例详解(全,例多)

    5

    1ab685d264ed4ae5b510dc7fbd0d1e55.jpeg

    ​​​​

    色彩颜色对照表(300种颜色)(16进制、RGB、CMYK、HSV、中英文名)

    4

    80007dbf51944725bf9cf4cfc75c5a13.png

    ​​​​

    Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细)

    3

    c6374d75c29942f2aa577ce9c5c2e12b.png

    ​​​​

    Tomcat 启动闪退问题解决集(八大类详细)

    2

    5218ac5338014f389c21bdf1bfa1c599.png

    ​​​​

    Tomcat端口配置(详细)

    1

    fffa2098008b4dc68c00a172f67c538d.png

    ​​​​

    Tomcat11、tomcat10 安装配置(Windows环境)(详细图文)

  • 相关阅读:
    微服务项目:尚融宝(46)(核心业务流程:借款申请(3))
    Redis(主从复制、哨兵模式、集群)概述及部署
    论文投稿指南——收藏|SCI写作投稿发表全流程
    Ubuntu安装Python 3.10
    常用 numpy 函数(长期更新)
    安卓--多指触控
    推荐一款免费的内网穿透工具ngrok
    攻防演练怎样从外网进行纵深突破
    CarSim仿真高级进阶(二)---VS 命令行(2)
    若依DataScopeAspect数据权限解析和ew.customSqlSegment源码解析
  • 原文地址:https://blog.csdn.net/weixin_69553582/article/details/126535582