一、set()函数去重
Python内置的set()函数可以快速实现列表去重。
list1 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list1 = list(set(list1))
print(new_list1) # [1, 2, 3, 4, 5, 6]
以上代码中,先将list1转换为集合,然后再将集合转换为列表。
需要注意的是,set()函数不仅可以用于数字列表的去重,也可以用于字符串、元组等其他类型的去重。
二、列表内置方法去重
Python内置的列表方法也可以实现列表去重。
方法一:通过循环实现。
list2 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list2 = []
for i in list2:
if i not in new_list2:
new_list2.append(i)
print(new_list2) # [1, 2, 3, 4, 5, 6]
方法二:通过列表推导式实现。
list3 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list3 = [i for i in list3 if i not in new_list3]
print(new_list3) # [1, 2, 3, 4, 5, 6]
需要注意的是,方法二中的列表推导式在大规模数据处理时可能会消耗较多的内存。
三、利用字典keys()方法去重
利用Python字典的keys()方法可以实现列表去重。
list4 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
dic = {}.fromkeys(list4)
new_list4 = list(dic.keys())
print(new_list4) # [1, 2, 3, 4, 5, 6]
需要注意的是,字典的key是不能重复的,因此可以利用这一特性进行去重。
四、利用外部库实现列表去重
除了使用Python内置函数和方法进行列表去重外,还可以使用外部库来实现列表去重。
方法一:利用numpy库实现。
import numpy as np
list5 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list5 = np.unique(list5)
print(new_list5) # [1 2 3 4 5 6]
方法二:利用pandas库实现。
import pandas as pd
list6 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list6 = pd.unique(list6).tolist()
print(new_list6) # [1, 2, 3, 4, 5, 6]
需要注意的是,使用外部库实现列表去重需要先安装相应的库。
五、总结
本文介绍了Python中实现列表去重的五种方法。需要根据实际情况选择不同的方法进行应用,如对于较小规模的数据可以使用内置函数和方法进行处理,而对于大规模数据则可能需要使用外部库。
附:完整代码示例
#set函数去重
list1 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list1 = list(set(list1))
print(new_list1) #[1, 2, 3, 4, 5, 6]
#列表内置方法去重
#方法一:循环实现
list2 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list2 = []
for i in list2:
if i not in new_list2:
new_list2.append(i)
print(new_list2) #[1, 2, 3, 4, 5, 6]
#方法二:列表推导式实现
list3 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list3 = [i for i in list3 if i not in new_list3]
print(new_list3) #[1, 2, 3, 4, 5, 6]
#利用字典keys()方法去重
list4 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
dic = {}.fromkeys(list4)
new_list4 = list(dic.keys())
print(new_list4) #[1, 2, 3, 4, 5, 6]
#利用外部库实现列表去重
#方法一:利用numpy库实现
import numpy as np
list5 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list5 = np.unique(list5)
print(new_list5) #[1 2 3 4 5 6]
#方法二:利用pandas库实现
import pandas as pd
list6 = [1, 2, 2, 3, 3, 4, 5, 5, 6]
new_list6 = pd.unique(list6).tolist()
print(new_list6) #[1, 2, 3, 4, 5, 6]