精华内容
下载资源
问答
  • 在开发中对列表去重是非常常见的需求,列表去重也是Python中一种常见的处理方式。列表作为Python中最常用的数据结构,承担了Python中大多数的数据存储任务,但Python本身是不满足互异性的,意思就是有可能重复,那就...

    在开发中对列表去重是非常常见的需求,列表去重也是Python中一种常见的处理方式。列表作为Python中最常用的数据结构,承担了Python中大多数的数据存储任务,但Python本身是不满足互异性的,意思就是有可能重复,那就需要去除这些重复值。那么Python列表去重要怎么做呢?列表去重的方式有很多,下面介绍4种方式,并对其进行性能比较。

    ce3ed672d56a4ea3d0ec84ae3eedac32.png

    让我们先制造一些简单的数据,生成0到99的100万个随机数:

    from random import randrange

    DUPLICATES= [randrange(100) for _ in range(1000000)]

    接下来尝试这4种去重方式中最简单直观的方法:

    1. 新建一个数组,遍历原数组,如果值不在新数组里便加入到新数组中。

    # 第一种方式

    def easy_way():

    unique= []

    for element in DUPLICATES:

    if element not in unique:

    unique.append(element)

    return unique

    进入ipython使用timeit计算其去重耗时:

    %timeit easy_way()

    # 1.16 s ± 137 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

    7aabbcc90cb452120505d0513a4368be.png

    平均耗时在1.16秒左右,但是在这个例子中我们使用了数组作为存储对象,实际上如果我们改成集合存储去重后的结果,性能会快不少:

    def easy_way():

    unique=set()

    for element in DUPLICATES:

    if element not in unique:

    unique.add(element)

    return unique

    %timeit easy_way()

    # 48.4 ms ± 11.6 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

    平均耗时在48毫秒左右,改善明显,这是因为集合和数组的内在数据结构完全不同,集合使用了哈希表,因此速度会比列表快许多,但缺点在于无序。

    接下来看看第2种方式:

    2. 直接对数组进行集合转化,然后再转回数组:

    # 第二种去重方式

    def fast_way()

    return list(set(DUPLICATES))

    耗时:

    %timeit fast_way()

    # 14.2 ms ± 1.73 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)

    平均耗时14毫秒,这种去重方式是最快的,但正如前面所说,集合是无序的,将数组转为集合后再转为列表,就失去了原有列表的顺序。

    如果现在有保留原数组顺序的需要,那么这个方式是不可取的,怎么办呢?

    3. 保留原有数组顺序的去重

    使用dict.fromkeys()函数,可以保留原有数组的顺序并去重:

    def save_order():

    return list(dict.fromkeys(DUPLICATES))

    当然,它会比单纯用集合进行去重的方式耗时稍微久一点:

    %timeit save_order()

    # 39.5 ms ± 8.66 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

    平均耗时在39.5毫秒,我认为这是可以接受的耗时,毕竟保留了原数组的顺序。

    但是,dict.fromkeys()仅在Python3.6及以上才支持。

    如果你是Python3.6以下的版本,那么可能要考虑第四种方式了。

    4. Python3.6以下的列表保留顺序去重

    在Python3.6以下,其实也存在fromkeys函数,只不过它由collections提供:

    from collections import OrderedDict

    def save_order_below_py36():

    return list(OrderedDict.fromkeys(DUPLICATES))

    耗时:

    %timeit save_order_below_py36()

    # 71.8 ms ± 16.9 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

    平均耗时在72毫秒左右,比 Python3.6 的内置dict.fromkeys()慢一些,因为OrderedDict是用纯Python实现的。

    以上就是4种Python列表去重的方式,通过耗时比较,其性能高低一目了然。希望上述方式对你学习Python有所帮助。

    展开全文
  • python列表去重

    2021-09-30 17:50:06
    输入一系列以逗号分隔的英文人名,其中包含重复的名字,请将其中重复的名字去掉,输出包含不重复人名的列表,名字出现顺序与输入顺序相同。 原因分析: 解决方案: 代码 list1 = list(input().split(",")) # set1 ...

    项目场景:

    提示:

    问题描述:

    输入一系列以逗号分隔的英文人名,其中包含重复的名字,请将其中重复的名字去掉,输出包含不重复人名的列表,名字出现顺序与输入顺序相同。

    在这里插入图片描述


    原因分析:

    列表去重基本思路很简单对原列表里的每个元素进行判断,如果不在就添加到新列表中。这样才能保证原先的顺序与新列表一致。

    解决方案:

    代码

    list1 = list(input().split(","))
    # set1 = set(list1)
    # list2 = list(set1)
    # print(list2)
    list2 = []
    for i in list1:
        if i not in list2:
            list2.append(i)
    print(list2)
    
    展开全文
  • python列表去重计数

    2021-04-13 18:21:39
    读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...

    @python列表去重计数TOC

    
    ```python
    import pandas as pd
    import numpy as np
    from pprint import pprint
    list = ['A', 'B', 'B', 'c']
    #对标签进行workcount
    
    Klist, Vcount =  np.unique(list,return_counts=True)
    print(Klist, Vcount)
    maxi = np.argmax(Vcount)
    
    print(Vcount[maxi])
    
    
    
    
    展开全文
  • python列表去重 怎么快速的对列表进行去重呢,去重之后原来的顺序会不会改变呢? 去重之后顺序会改变 set去重 #列表去重改变原列表的顺序了 l1 = [1,4,4,2,3,4,5,6,1] l2 = list(set(l1)) print(l2) # [1, 2, 3, 4...

    python中列表去重

    怎么快速的对列表进行去重呢,去重之后原来的顺序会不会改变呢?
    去重之后顺序会改变

    set去重

    #列表去重改变原列表的顺序了
    l1 = [1,4,4,2,3,4,5,6,1]
    l2 = list(set(l1))
    print(l2)    # [1, 2, 3, 4, 5, 6]
    

    但是,可以通过列表中索引(index)的方法保证去重后的顺序不变。

    l1 = [1,4,4,2,3,4,5,6,1]
    l2 = list(set(l1))
    l2.sort(key=l1.index)
    print(l2)      # [1, 4, 2, 3, 5, 6]
    

    itertools.groupby

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    import itertools
    l1 = [1,4,4,2,3,4,5,6,1]
    l1.sort()
    l = []
    it = itertools.groupby(l1)
    for k,g in it:
        l.append(k)
    print(l)      # [1, 2, 3, 4, 5, 6]
    

    fromkeys

    l1 = [1,4,4,2,3,4,5,6,1]
    t = list({}.fromkeys(l1).keys())
    # 解决顺序问题
    t.sort(key=l1.index)
    print(t)         # [1, 4, 2, 3, 5, 6]
    

    通过删除索引

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    l1 = [1,4,4,2,3,4,5,6,1]
    t = l1[:]
    for i in l1:
        while t.count(i) >1:
              del t[t.index(i)]
    # 解决顺序问题
    t.sort(key=l1.index)
    print(t)    # [1, 4, 2, 3, 5, 6]
    

    去重不改变顺序

    建立新列表[]

    l1 = [1,4,4,2,3,4,5,6,1]
    new_l1 = []
    for i in l1:
        if i not in new_l1:
            new_l1.append(i)
    print(new_l1)    # [1, 4, 2, 3, 5, 6]
    

    reduce方法

    from functools import reduce
    l1 = [1,4,4,2,3,4,5,6,1]
    func = lambda x,y:x if y in x else x + [y]
    print(reduce(func,[[],]+l1))   # [1, 4, 2, 3, 5, 6]
    
    展开全文
  • Python列表去重方法

    2021-09-14 11:17:34
    [root@localhost ~]# python listuniq.py [2, 3, 41, 4] 方法四: 使用列表推导来去重 >>> lst1=[2,3,41,2,4,3,4] >>> temp = [] >>> [temp.append(i) for i in lst1 if not i in temp] [None, None, None, None] >>...
  • python列表去重的两种方法

    千次阅读 2021-03-10 22:40:27
    python列表去重的两种方法 1. 使用循环进行遍历,将重复的元素去掉。 def test1(): lst = [1,2,5,6,3,5,7,3] tmp = [] for it in lst: if it not in tmp: tmp.append(it) print(tmp) 结果: [1, 2, 5, 6, 3, ...
  • 在抓取页面图片时,为避免重复抓取,将抓取的img结果(结果集是list类型的)通过集合去重。这里总结了下网上搜集到的几种方法。一、方法1代码如下ids = [1,2,3,3,4,2,3,4,5,6,1]news_ids = []for id in ids:if id not ...
  • 如下所示:# x = ['c b a',"e d f"]# y = []# for i in x:# for ii in i:# # print(ii)# if ii == ' ':# pass# else:# y.append(ii)# print(y)# python 清除列表中的空字符# list1 = ['122','2333','3444',' ','422'...
  • Build 2015 Beijing & Windows 10 China Geek Challenge6月5日,借着Build 2015在北京召开分会的东风,参加了这次由微软中国举办的Windows 10中国开发者极客挑战赛. 白天是Build 2015课程,学习了...
  • Python列表去重去除空字符的例子来源:中文源码网浏览: 次日期:2019年11月5日【下载文档:Python列表去重去除空字符的例子.txt】(友情提示:右键点上行txt文档名->目标另存为)Python 列表去重去除空字符的例子...
  • l1 = ['b','c','d','b','c','a','a'] l2 = [] [l2.append(i) for i in l1 if not i in l2] print l2
  • 前言列表去重是写Python脚本时常遇问题,因为不管源数据来自哪里,当我们转换成列表的方式时,有可能预期的结果不是我们最终的结果,最常见的就是列表中元素有重复,这时候第一件事我们就要做去重处理。我们先来个最...
  • Python字典列表去重

    千次阅读 2021-05-17 14:41:53
    Python字典列表去重 最近在写代码时老是遇到 字典列表去重,想当然的就用上了 set(),哈哈哈哈哈直接上代码 list_a = [{"name": "Tom", "age": 18}, {"name": "Jerry", "age": 18}, {"name": "Tom", "age": 18}...
  • 一 总结python 列表去重的方法, 与性能对比1 总结一下 列表 去重的方法,也参考了网上一些博客 的写法.好奇心,让我来测试一下 他们的效率如何?#!/usr/bin/env python3# -*- coding: UTF-8 -*-"""@author: Frank@...
  • # 一、准备一个带有重复数据的列表 list_1 = [1,2,3,1,5,6,2] # 二、使用 set() 方法进行去重处理 #【注:仅用 set() 方法处理后的数据类型并不是 list 】 result = set(list_1) print("仅用 set() 方法处理后的...
  • python列表如何去重

    2021-02-03 16:15:15
    python列表去重的方法:1、利用字典的【fromkeys()】和【keys()】方法去重;2、集合的可迭代方法;3、用for循环,代码为【for x in L3:if x not in L4:L4.append(x)】。python列表去重的方法:第一种方法,利用字典...
  • Python列表去重

    2021-02-09 10:32:21
    无聊统计了下列表去重到底有多少种方法。1.集合list(set(alist))如果要保持顺序:import randomif __name__=='__main__':a=[random.randint(0,10) for i in xrange(10)]b=list(set(a))b.sort(key=a.index)2.字典大都...
  • python集合去重

    2021-01-29 12:15:44
    [python中对list去重的多种方法怎么快速的对列表进行去重呢,去重之后原来的顺序会不会改变呢?1.以下的几种情况结果是一样的,去重之后顺序会改变:i = [1,2,3,3,4,2,3,4,5,6,1]news_i= []for id in i:if id not in ...
  • python列表去重方法

    2021-02-10 00:52:43
    原文链接:http://www.peterbe.com/plog/uniqifiers-benchmarkSuppose you have a list in python that looks like this:['a','b','a']# or like this:[1,2,2,2,3,4,5,6,6,6,6]and you want to remove all ...
  • python 列表去重

    2021-10-26 23:12:12
    最快速的实现方法,就是先将列表转化成集合,再把集合变成列表。 list = [2, 3, 3, 4, 4, 5, 6, 7] list_a = set(list) # 强转为集合 res = [i for i in list_a] # 用列表生成器变成列表 print(res) ...
  • 1、列表去重并排序 升序 a = ['b','c','b','a'] a_set = list(set(a)) a_set.sort() 运行结果: 去重保持原来的顺序 a = ['b','c','b','a'] a_set = list(set(a)) a_set.sort(key = a.index) 运行结果: ...
  • 开发中对数组、列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序, 后面两种方法可以保持原来的顺序。下面的代码都在Python3下测试通过, Python2下请自行测试1. ...
  • # 有列表nums,列表元素有重复且乱序,现需要将列表进行去重将序处理 nums = [1,6,6,7,4,5,1] # 用集合去重,再用list将集合转成有序列表 n = list(set(nums)) # 用sort将列表进行排序,reverse=True为降序设置 n....
  • ##################################################################### python 读取TXT到数组 列表去重,不打乱原来的顺序# 刚学写的不好请大家见谅###########################################################...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,989
精华内容 21,995
关键字:

python列表如何去重

python 订阅