Python列表常用方法五:元素如何去掉重复项

引言

列表作为一个容器可以存储不同类型的数据元素,而且可以存储重复元素。在项目应用中,提取列表中唯一元素删除重复项是常见操作,实现方法也多种多样。列举几种常用方法方便遗忘时回忆。

目录

一、set()去重复

二、列表推导式去重复

三、numpy.unque()去重复

四、字典的键去重复

五、列表常用方法系列文章链接


一、set()去重复

使用集合set数据结构可以去重复,但会造成数据无序性,改变原始列表的有序性。

示例代码

import time

def remove_duplicate_1(data_list):
    start_time = time.time()

    #利用集合set去重复
    new_list = list(set(data_list))
    end_time = time.time()
    print("使用set()集合去重复时间{:.3f}".format(end_time-start_time))
    return new_list

duplicate_cnt = int(1e8)    #重复次数
data = list(range(6))*duplicate_cnt
new_list = remove_duplicate_1(data)
print(new_list)

#实验结果
使用set()集合去重复时间4.511
[0, 1, 2, 3, 4, 5]

二、列表推导式去重复

如果像保持列表去重复后数据的有效顺序可以使用列表推导式与if语句的组合。

示例代码

import time

def remove_duplicate_2(data_list):
    start_time = time.time()
    new_list = []
    #利用列表推导式去重复
    [new_list.append(i) for i in data_list if i not in new_list]
    end_time = time.time()
    print("使用列表推导式去重复时间{:.3f}".format(end_time-start_time))
    return new_list

duplicate_cnt = int(1e8)    #重复次数
data = list(range(6))*duplicate_cnt
new_list = remove_duplicate_2(data)
print(new_list)

#实验结果
使用列表推导式去重复时间16.925
[0, 1, 2, 3, 4, 5]

三、numpy.unque()去重复

列表中的数据类型越统一 ,处理速度越快。

import time
import numpy as np

def remove_duplicate_3(data_list):
    start_time = time.time()

    #利用unique函数
    new_list = np.unique(data_list).tolist()
    end_time = time.time()
    print("使用np.unique函数去重复时间{:.3f}".format(end_time-start_time))
    return new_list


duplicate_cnt = int(1e6)    #重复次数
print('整数列表去重复操作')
data = list(range(6))*duplicate_cnt
new_list = remove_duplicate_3(data)
print(new_list)

print('浮点数列表去重复操作')
data = [float(i) for i in range(6)]*duplicate_cnt
new_list = remove_duplicate_3(data)
print(new_list)

print('混合数据列表去重复操作')
data = [0,1,2,3.0,4,5.0]*duplicate_cnt
new_list = remove_duplicate_3(data)
print(new_list)

#结果
整数列表去重复操作
使用np.unique函数去重复时间0.314
[0, 1, 2, 3, 4, 5]
浮点数列表去重复操作
使用np.unique函数去重复时间0.341
[0.0, 1.0, 2.0, 3.0, 4.0, 5.0]
混合数据列表去重复操作
使用np.unique函数去重复时间0.439
[0.0, 1.0, 2.0, 3.0, 4.0, 5.0]

四、字典的键去重复

利用字典键的唯一性去除列表中的重复数据

def remove_duplicate_4(data_list):
    start_time = time.time()

    #利用字典的键唯一性去重复
    new_list = list(dict.fromkeys(data_list))
    end_time = time.time()
    print("使用字典的键唯一性去重复时间{:.3f}".format(end_time-start_time))
    return new_list

duplicate_cnt = int(1e8)    #重复次数
# print('整数列表去重复操作')
data = list(range(6))*duplicate_cnt
new_list = remove_duplicate_4(data)
print(new_list)

#结果
使用字典的键唯一性去重复时间8.434
[0, 1, 2, 3, 4, 5]

五、列表常用方法系列文章链接

关于列表的内置函数使用技巧相继推出了五篇文章,为方便大家知晓每篇文章的主讲内容。本部分列出主讲方法和相关链接。

主讲方法文章链接
1.append()、extend()和insert()的详解https://blog.csdn.net/li1784506/article/details/130664126?spm=1001.2014.3001.5502
2.remove()、del、pop()、clear()的详解https://blog.csdn.net/li1784506/article/details/139159598?spm=1001.2014.3001.5502
3.sort()和sorted(),reverse()和reversed()的区别https://blog.csdn.net/li1784506/article/details/139185664?spm=1001.2014.3001.5502
4.count()、index()函数https://blog.csdn.net/li1784506/article/details/139204177?spm=1001.2014.3001.5502
5.列表元素如何去掉重复项https://blog.csdn.net/li1784506/article/details/139215227?spm=1001.2014.3001.5502

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值