python四种方法实现去除列表中的重复元素

本文介绍了一种使用Python去除列表中重复元素的四种方法,包括利用集合、字典、列表推导及排序等技术手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前些天发现了一个风趣幽默的人工智能学习网站,通俗易懂,忍不住分享一下给大家。点击跳转到教程     

一共使用四种方法来去除列表中的重复元素,下面是具体实现:

 

#!usr/bin/env python  
#encoding:utf-8  
  
''''' 
__Author__:沂水寒城 
功能:去除列表中的重复元素
''' 

def func1(one_list):
    '''
    使用集合,个人最常用
    '''
    return list(set(one_list))


def func2(one_list):
    '''
    使用字典的方式
    '''
    return {}.fromkeys(one_list).keys()


def func3(one_list):
    '''
    使用列表推导的方式
    '''
    temp_list=[]
    for one in one_list:
        if one not in temp_list:
            temp_list.append(one)
    return temp_list


def func4(one_list):
    '''
    使用排序的方法
    '''
    result_list=[]
    temp_list=sorted(one_list)
    i=0
    while i<len(temp_list):
        if temp_list[i] not in result_list:
            result_list.append(temp_list[i])
        else:
            i+=1
    return result_list


if __name__ == '__main__':
    one_list=[56,7,4,23,56,9,0,56,12,3,56,34,45,5,6,56]
    print func1(one_list)
    print func2(one_list)
    print func3(one_list)
    print func4(one_list)

 

 


 结果如下:

 

 

[0, 34, 3, 4, 5, 6, 7, 9, 12, 45, 23, 56]
[0, 34, 3, 4, 5, 6, 7, 9, 12, 45, 23, 56]
[56, 7, 4, 23, 9, 0, 12, 3, 34, 45, 5, 6]
[0, 3, 4, 5, 6, 7, 9, 12, 23, 34, 45, 56]

 

 

 

 

 

### Python 去除列表重复元素方法Python 中,有多种方式可以去除列表中的重复元素。以下是几种常见的方法及其特点: #### 方法一:使用 `set` 数据结构 通过将列表转换为集合 (`set`) 来自动移除重复项,因为集合允许包含重复的元素。之后再将其转回列表形式。 ```python list1 = [1, 2, 5, 6, 7, 4, 8, 2, 7, 9, 4, 6, 3] list2 = list(set(list1)) print(list2) # 输出可能是无序的结果,例如 [1, 2, 3, 4, 5, 6, 7, 8, 9] ``` 这种方法简单高效,但由于集合保留顺序,最终得到的列表可能会失去原本的元素顺序[^2]。 #### 方法二:基于生成器函数实现去重 如果需要保留原始列表中元素的顺序,则可以通过定义一个生成器函数来完成此任务。这种方式适用于可哈希的数据类型。 ```python def dedupe(items): seen = set() for item in items: if item not in seen: yield item seen.add(item) list1 = [1, 2, 5, 6, 7, 4, 8, 2, 7, 9, 4, 6, 3] list2 = list(dedupe(list1)) print(list2) # 输出: [1, 2, 5, 6, 7, 4, 8, 9, 3] ``` 这个方法仅能够保持元素原有的相对位置变,而且对于大型数据集来说更加节省内存资源[^3]。 #### 方法三:利用列表推导式与条件过滤 另一种思路是借助列表推导式的强大功能,在新构建的过程中仅选取那些未曾在之前出现过的项目加入进来。 ```python list1 = [1, 2, 5, 6, 7, 4, 8, 2, 7, 9, 4, 6, 3] seen = [] list2 = [x for x in list1 if (not (x in seen or seen.append(x)))] print(list2) # 输出: [1, 2, 5, 6, 7, 4, 8, 9, 3] ``` 虽然这种写法看起来简洁优雅,但是由于每次都需要检查当前值是否已存在于临时变量 `seen` 当中,所以当面对非常庞大的输入源时性能开销较大[^1]。 #### 方法四:应用 NumPy 的 `unique` 函数 如果是从事数值运算或者科学计算领域的工作,那么很可能已经在环境中引入了 NumPy 库。此时可以直接调用它的内置工具——`np.unique()` 来轻松解决这个问题。 ```python import numpy as np arr = np.array([1, 2, 5, 6, 7, 4, 8, 2, 7, 9, 4, 6, 3]) uniques = np.unique(arr) print(uniques.tolist()) # 转化为标准 python 列表后打印出来 ``` 相比纯 Python 解决方案,NumPy 提供的操作往往经过高度优化,尤其适合处理大规模数组型数据[^2]。 --- ### 总结 以上介绍了四种同的技术路径用于消除 Python 列表内的重复成员。每一种都有各自的适用范围以及优缺点所在。实际开发过程中应根据具体情况灵活选用最合适的那一种。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Together_CZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值