编写Python代码实现删除一个list(列表)中的重复元素。
此题解法有很多种:
第一种:使用set函数:
a=[98,97,100,100,102,117,230,230,117,118,117,50]
s=set(a)
print(s)
运行结果是一个集合:
{97, 98, 100, 102, 230, 50, 117, 118}
第二种:使用append函数,建立一个新列表,在新列表中保存无重复元素
def delList(L):
L1 = []
for i in L:
if i not in L1:
L1.append(i)
return L1
print(delList([1,2,2,3,3,4,5]))
print(delList([1,8,8,3,9,3,3,3,3,3,6,3]))
运行结果为:
[1, 2, 3, 4, 5]
[1, 8, 3, 9, 6]
第三种:使用字典函数
a=[1,2,4,2,4,5,6,5,7,8,9,0]
b={}
b=b.fromkeys(a)
c=list(b.keys())
print("b的值为:",b)
print('去重后的list为:',c)
运行结果为:
b的值为: {1: None, 2: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None, 0: None}
去重后的list为: [1, 2, 4, 5, 6, 7, 8, 9, 0]
代码解释:
语法:dict.fromkeys(seq[, value])。
Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
于此代码中,即是将列表中的值作为一个新建字典b中的key值,但由于字典的key不可以重复,所以相当于做了一个去重,然后再将新建字典的key值提取出来组成一个新列表c。
fromkeys的语法详见链接:https://www.runoob.com/python/att-dictionary-fromkeys.html
第四种:
a = [1, 2, 4, 2, 4, 5, 7, 10, 5, 5, 7, 8, 9, 0, 3]
a.sort()
print(a)
last = a[-1]
for i in range(len(a) - 2, -1, -1):
if last == a[i]:
del a[i]
else:
last = a[i]
print(a)
运行结果为:
[0, 1, 2, 2, 3, 4, 4, 5, 5, 5, 7, 7, 8, 9, 10]
[0, 1, 2, 3, 4, 5, 7, 8, 9, 10]
这其实就是用到了一个排序算法思想,先从最后一个数开始,然后逐个比较,如果有相同的元素,即舍去,最后得到了一个去重后的列表。
第五种:count.remove方法
def delList(list):
for i in list:
if list.count(i) != 1:
for x in range((list.count(i) - 1)):
list.remove(i)
return list
print(delList([1, 2, 2, 3, 3, 4, 5]))
print(delList([1, 8, 8, 3, 9, 3, 3, 3, 3, 3, 6, 3]))
运行结果:
[1, 2, 3, 4, 5]
[1, 8, 9, 6, 3]
代码解释:
count语法:str.count(sub, start= 0,end=len(string))
Python count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
count语法详见链接:https://www.runoob.com/python/att-string-count.html
我们先遍历列表list,得到list列表中每一个元素出现的次数,如果次数不为一,即在这个列表中这个元素有重复项,那我们便使用循环丢弃重复项,最后得到一个去重的列表。