• 技术文章 >Python技术 >Python基础教程

    python集合和列表推导式哪种方法去重快

    小妮浅浅小妮浅浅2021-01-12 18:20:09原创5059

    在我们学习了集合中的操作符后,关于可以筛选出集合中重复元素的这一点,我们可以利用集合进行去重筛选的操作。当然其他的筛选操作还有列表推导式,我们之前也有所涉及。为了验证哪种方式去重的效率更高,本篇小编会分别列出相应的代码模块,感兴趣的小伙伴也可以跟着一起测试结果。


    先讲讲set(集合)的使用,大括号或 set() 函数可以用来创建集合。set集合类需要的参数必须是迭代器类型的,如:序列、字典等,然后转换成无序不重复的元素集。由于集合是不重复的,所以可以对字符串、列表、元组进行去重操作。

    集合是从列表(list)中删除重复值的最快的方法。为了证明这一点,让我们研究以下两种方法之间的差异。

    方法 1:使用集合删除列表中的重复值。

    print(list(set([1, 2, 3, 1, 7])))

    方法 2:使用一个列表推导式(list comprehension)从一个列表中删除重复值。

    def remove_duplicates(original):
        unique = []
        [unique.append(n) for n in original if n not in unique]
        return(unique)
     
    print(remove_duplicates([1, 2, 3, 1, 7]))

    性能的差异可以用「timeit」库来测量,这个库允许你对 Python 代码进行计时。下面的代码将每种方法运行了 10,000 次,并且以秒为单位输出了总计时间。

    import timeit
     
    # Approach 1: Execution time
    print(timeit.timeit('list(set([1, 2, 3, 1, 7]))', number=10000))
     
    # Approach 2: Execution time
    print(timeit.timeit('remove_duplicates([1, 2, 3, 1, 7])', globals=globals(), number=10000))

    对比这两种方法,结果表明,使用集合删除重复值是更加高效的。虽然时间差异看似很小,但实际上在有一个非常大的列表时,能帮你节省很多的时间。

    以上就是我们在python中使用集合和列表推导式测试去重快慢的结果。结果显而易见是集合去重的速度更快,想要获得同样效果的小伙伴可以也来尝试下小编的方法。

    专题推荐:python集合 列表推导式
    上一篇:python不可变集合中改变元素 下一篇:python中不同推导式怎么写

    相关文章推荐

    • python列表推导式是什么?• Python列表推导式(for表达式)及用法• 列表推导式与生成表达式的区别• python教程基础:列表推导式• 新增元素在python集合中有哪些方法?• python集合与序列遍历的方法一样吗• python集合中的操作符有哪些?怎么用?• python中集合的范围怎么比较包容性?• python不可变集合中改变元素

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网