猿创征文|《 Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素方法

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

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

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

         本篇目录:

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

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

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

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

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

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

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

②方法二:使用count()函数和remove()函数去重

③方法三:使用列表推导的方式去重

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

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

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

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


六、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 表示要删除列表的名称

注  意

知识拓展

实 例

删除列表前:

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

代  码

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

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

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

print(mlist)

del mlist[4]

print(mlist)

运行结果

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

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

删除列表前:

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

代  码

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

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

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

print(mlist)

del mlist[-2]

print(mlist)

运行结果

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

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

代  码

代码解释: 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']

代  码

代码解释: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() 的功能。

实 例

删除列表前:

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

代  码

代码解释:使用正数索引

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

print(mlist)

mlist.pop(4)

print(mlist)

运行结果

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

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

删除列表前:

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

代  码

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

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

print(mlist)

mlist.pop(-2)

print(mlist)

运行结果

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

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

删除列表前:

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

代  码

代码解释:删除列表中索引为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]]

删除列表前:

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

代  码

代码解释:删除列表中索引为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]]

删除列表前:

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

代  码

代码解释:删除列表中索引为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]]

 删除列表前:

代  码

代码解释:删除列表中索引为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

删除列表前:

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

代  码

代码解释:删除列表中索引为-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]]

删除列表前:

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

代  码

代码解释:删除列表中索引为-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]]

删除列表前:

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

代  码

代码解释: 如果不写 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]]

删除列表前:

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

代  码

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

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

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

运行结果

不要的月饼过期月饼

代  码

运行结果

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

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

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

语  法

listname.remove(value)

参  数

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

注  意

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

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

知识拓展

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

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

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

实 例

删除列表前:

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

代  码

代码解释:使用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()函数 中的元素不可重复的特性去重

实 例

代  码

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

print(mlist)

print(set(mlist))

运行结果

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

[]

代  码

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

print(mlist)

print(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)

运行结果

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

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

③方法三:使用列表推导的方式去重

列表推导的方式

实 例

代  码

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)

运行结果

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

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

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

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

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

问题代码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

 篇幅太长,请点击下一章查看后续实例详解 ------》

逆境清醒 Python List列表——全实例详解系列
1 《 Python List 列表全实例详解系列(一)》__列表概念,创建列表(5种方式)
2 《 Python List 列表全实例详解系列(二)》__访问列表元素(索引和切片)列表反转(6种方法)
3 《 Python List 列表全实例详解系列(三)》__列表添加元素(4种方法)
4 《  Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素方法
5 《 Python List 列表全实例详解(五)》__
6 《 Python List 列表全实例详解(六)》__
7 《 Python List 列表全实例详解(七)》__
8 《 Python List 列表全实例详解(八)》__
9 《 Python List 列表全实例详解(九)》__
10 《 Python List 列表全实例详解(十)》__

推荐阅读:

14 ​​
13 用代码过中秋,python海龟月饼你要不要尝一口?
12 Python List 列表(创建、索引和切片、列表反转、添加删除修改查找元素)__实例详解(全)
11 用代码写出浪漫合集(python 绘制爱心、玫瑰花,字符画爱心、前端特效玫瑰、爱心)
10 Python函数方法实例详解全集(更新中...)
9 matplotlib 自带绘图样式效果展示速查(全)
8 手机屏幕坏了____怎么把里面的资料导出(18种方法)
7 2022年8月多家权威机构____编程语言排行榜__薪酬状况
6 Python中Print()函数的用法___详解(全,例多)
5 色彩颜色对照表系列(1~5)(16进制、RGB、CMYK、HSV、中英文名)
4 Tomcat端口配置(详细)
3 Tomcat 启动闪退问题解决集(八大类详细)
2 Apache Tomcat 各版本发行时间( v10.1.0-M17~v3.0)
1 Tomcat10安装(Windows环境)(详细)

猜你喜欢

转载自blog.csdn.net/weixin_69553582/article/details/126535582