本文实例讲述了Python list列表中删除多个重复元素操作。分享给大家供大家参考,具体如下:
我们以下面这个list为例,删除其中所有值为6的元素:
1
|
l = [ 9 , 6 , 5 , 6 , 6 , 7 , 8 , 9 , 6 , 0 ] |
首先尝试remove方法:
1
2
|
l.remove( 6 ) print (l) |
结果为:[9, 5, 6, 6, 7, 8, 9, 6, 0]
,只删除了第一个为6的元素。
如果采用for循环遍历各元素:
1
2
3
|
for x in l: if x = = 6 : l.remove(x) |
结果为[9, 5, 7, 8, 9, 6, 0]
,后面的6没有删除。主要因为remove改变了list长度和每一个元素的位置。
采用del语句需要找到元素对应下标del l[1]。应用for循环改变下标比较混乱,所以使用while循环:
1
2
3
4
5
6
7
8
9
|
length = len (l) x = 0 while x < length: if l[x] = = 6 : # l.remove(l[x]) del l[x] x - = 1 length - = 1 x + = 1 |
结果为[9, 5, 7, 8, 9, 0]
,删除了列表中所有的6。另外将del l[x]
改为l.remove(l[x])
也可以。
补充:
最近发现了numpy的unique()
函数可以去除列表中所有重复元素且将列表元素从小到大排序:
1
2
3
4
|
import numpy as np l = [ 9 , 6 , 5 , 6 , 6 , 7 , 8 , 9 , 6 , 0 ] a = np.unique(l) print (a) |
print(a)
结果为[0 5 6 7 8 9]
。l和a类型不同,前者是'list',后者是'numpy.ndarray'。
PS:本站还有两款比较简单实用的在线文本去重复工具,推荐给大家使用:
在线去除重复项工具:https://tool.zzvips.com/t/quchong/
在线文本去重复工具:https://tool.zzvips.com/t/txtquchong/
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/qq_28811329/article/details/79950451