方法一:利用集合去重
1 list1 = [5,3,4,‘ok‘,4,3,‘abc‘,8,52,‘ok‘] 2 list1=list(set(list1)) 3 print(list1)
方法二:此方法略微冗余,先判断元素是否重复,再将重复元素提取并保存到新列表中,再for 新建的列表元素,删除原列表
1 def list_dup(ls): 2 list2 = [] 3 length = len(ls) #获取列表元素个数 4 for i in range(0,length-1): 5 for j in range(0,length-1): 6 if ls[i] == ls[j]: #判断元素是否重复 7 list2.append(ls[j]) #将重复的元素提取出来(注:会重复提取) 8 #for i in ls: 9 #if ls.count(i) > 1: #另一种方法,用for和count()提取出重复元素 10 #list2.append(i) 11 for n in list2: 12 if ls.count(n) > 1: #判断元素的重复次数,大于1的,删除该元素 13 ls.remove(n) 14 #del ls[ls.index(n)] #用del删除 15 return ls 16 list1 = [5,3,4,‘ok‘,4,3,‘abc‘,8,52,‘ok‘] 17 print(list_dup(list1))
方法三:for循环列表元素,判断是否重复,并删除(注意:不能循环原列表删除,会报out of range错误)
1 def list_dup(ls): 2 for i in ls[:]: #循环复制的列表,可避免报out of range错误 3 if ls.count(i) > 1: #判断元素的重复次数,大于1的,删除该元素 4 ls.remove(i) 5 return ls 6 7 list1 = [5,3,4,‘ok‘,4,3,‘abc‘,8,52,‘ok‘] 8 print(list_dup(list1))
方法四:由方法三变化,用递归来实现。--by 孟楠兄
def list_dup(ls): for i in ls: if ls.count(i) > 1: ls.remove(i) list_dup(ls) #递归 return ls list1 = [5,3,4,‘ok‘,4,3,‘abc‘,8,52,‘ok‘] print(list_dup(list1))
方法五:用in 和 not in,代码量最小,最简单,同时也不改变原列表排序
list1 = [5,3,4,‘ok‘,4,3,‘abc‘,8,52,‘ok‘] list2 = [] for n in list1: if n not in list2: list2.append(n) print(list2)
Python练习题4(列表去重):[5,3,4,'ok',4,3,'abc',8,52,'ok']去除列表中重复内容 方法一:使用set 方法二:不使用set,自己写方法
原文地址:https://www.cnblogs.com/felixqiang/p/10223852.html
时间: 2024-10-18 05:06:13