返回顶部
首页 > 资讯 > 后端开发 > Python >Python列表和集合的效率对比
  • 214
分享到

Python列表和集合的效率对比

列表Python集合 2023-05-14 20:05:15 214人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

程序运行效率程序的运行效率分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个程序的运行速度,而空间复杂度主要衡量一个程序所需要的额外存储空间。一个程序执行所耗费的时

Python列表和集合的效率对比

程序运行效率

程序的运行效率分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个程序的运行速度,而空间复杂度主要衡量一个程序所需要的额外存储空间。

一个程序执行所耗费的时间,从理论上说,是不能算出来的,只有你把程序放在机器上跑起来,才能知道,不同机器不同时间得出的结果可能不一样。但是我们需要每个程序都上机测试吗?显然不现实,所以才有了时间复杂度这个分析方式。实际中我们计算时间复杂度时,其实并不一定要计算精确的执行次数,而只需要大概执行次数,一般会使用大O渐进表示法,平时执行次数为1次的我们就可以说时间复杂度是O(1),需要n次的就可以说时间复杂度是O(n)。

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。空间复杂度不是程序占用了多少个字节的空间,因为这个实际运行过程中很难计算,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。

python组合数据类型中常用的主要有元组、列表、集合和字典,每种数据类型不同操作的时间复杂度可以参考Python的官方链接,网页中有详细的说明,

  • https://wiki.python.org/moin/TimeComplexity

元组和列表都属于序列类型,他们存储机制基本一致;集合和字典也是基本相同,唯一的区别就是集合每个元素没有对应的值。接下来我们以集合和列表为例看看他们的查找效率和存储开销。

数据查找效率

关于集合和列表数据查找效率差距到底有多大?先看一组实例:

import time
import random
nums = [random.randint(0, 2000000) for i in range(1000)]
list_test = list(range(1000000))
set_test = set(list_test)
count_list, count_set = 0, 0
t1 = time.time()# 测试在列表中进行查找
for num in nums:
 if num in list_test:
 count_list += 1
t2 = time.time()
for num in nums:# 测试在集合中进行查找
 if num in set_test:
 count_set += 1
t3 = time.time()# 测试在集合中进行查找
print('找到个数,列表:{},集合:{}'.fORMat(count_list, count_set))
print('使用时间,列表:{:.4f}s'.format(t2 - t1))
print('使用时间,集合:{:.4f}s'.format(t3 - t2))

输出结果为:

找到个数,列表:515,集合:515
使用时间,列表:7.7953s
使用时间,集合:0.0010s

从上面例子可以清楚地看出,集合的查找效率远远高于列表,因此在不同的应用场景下,一定要选择合适的数据类型,在小数据量下看不出来性能区别,一旦换到大数据量下,就会变得差异性很大。

数据存储开销

集合的查找效率比列表要快得多,主要就是他们的存储原理不一样,集合需要消耗更多的空间来存储额外的信息,用空间开销来换时间效率,接下来我们通过getsizeof()函数看看他们存储开销的差异,getiszeof()函数是python的sys模块中用来获取对象内存大小的函数,返回的大小以字节为单位。

import sys
import random
list_test = list(range(1000000))
set_test = set(range(1000000))
print('列表占用大小:', sys.getsizeof(list_test))
print('集合占用大小:', sys.getsizeof(set_test))

输出结果为:

列表占用大小:9000112
集合占用大小:33554656

从结果可以看出,同样的数据内容,集合存储的开销是列表的好几倍。

以上就是Python列表和集合的效率对比的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Python列表和集合的效率对比

本文链接: https://lsjlt.com/news/205406.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python列表和集合的效率对比
    程序运行效率程序的运行效率分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个程序的运行速度,而空间复杂度主要衡量一个程序所需要的额外存储空间。一个程序执行所耗费的时...
    99+
    2023-05-14
    列表 Python 集合
  • Python列表和集合效率源码对比分析
    这篇“Python列表和集合效率源码对比分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python列表和集合效率源码对比...
    99+
    2023-07-06
  • Python列表和集合的效率大比拼
    目录程序运行效率数据查找效率数据存储开销程序运行效率 程序的运行效率分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要...
    99+
    2024-04-02
  • python列表处理效率对比测试
    #!/usr/bin/env import datetime class adair: def test1(n): lst=[] for i in range(n*10000): ...
    99+
    2023-01-31
    效率 对比测试 列表
  • Java集合中contains方法的效率对比分析
    最近让部门技术大佬帮忙代码review的时候,他给我指出了一个小的技术细节,就是对于集合的contains方法尽量选用Set而不是List,平时没怎么注意,仔细看了下源码,大佬就是大...
    99+
    2024-04-02
  • SQL和Python的集合操作对比
    本篇内容主要讲解“SQL和Python的集合操作对比”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL和Python的集合操作对比”吧!集合操作分析式问题通常...
    99+
    2024-04-02
  • Java中List集合去重方法以及效率对比
    List集合相信大家在开发过程中几乎都会用到。有时候难免会遇到集合里的数据是重复的,需要进行去除。然而,去重方式有好几种方式,你用的是哪种方式呢?去重方式效率是否是最高效、最优的呢?...
    99+
    2024-04-02
  • merge into 和 update 的效率对比
    merge into 和 update 的效率对比 以前只考虑 merge into 只是在特定场合下方便才使用的,今天才发现,merge into&...
    99+
    2024-04-02
  • 关于Python元祖,列表,字典,集合的比较
    定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来...
    99+
    2022-06-04
    元祖 字典 列表
  • python 列表,集合和字典的增删改查
    目录一 列表二 集合三 字典总结 一 列表 # 列表:包含0个或多个对象引用的有序队列,用中括号[]表示 # 增加 a = [] a.append(1) # a.append...
    99+
    2024-04-02
  • python中集合和列表的区别是什么
    在Python中,集合和列表是两种不同类型的数据结构,它们之间有一些重要的区别: 列表是有序的,元素按照插入的顺序进行存储,可以...
    99+
    2024-04-02
  • python list与numpy数组效率对比
    目录前言索引效率与内存占用比较添加效率比较总结前言 因为经常一训练就是很多次迭代,所以找到效率比较高的操作能大大缩短运行时间,但这方面资料不足,所以自己记录总结一下,有需要再补充 索...
    99+
    2023-02-01
    python list python numpy数组 list与numpy数组效率
  • python如何使用集合和列表统计
    这篇文章主要介绍python如何使用集合和列表统计,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用集合(set)和列表(list)统计先用 set 去重,然后循环把每一个元素和对应的次数&nbs...
    99+
    2023-06-27
  • Python元素集合的列表切片
    目录一、列表切片(Slicing)二、基础实例三、带有负索引的切片 (Slice with Negative Indices)四、带有正负索引的切片五、指定切片step六、负步长七、...
    99+
    2024-04-02
  • Python中字典和列表性能的对比分析
    本篇文章为大家展示了Python中字典和列表性能的对比分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python列表和字典前面我们了解了 “大O表示法” 以及对不同的算法的评估,下面来讨论下 P...
    99+
    2023-06-15
  • Python 列表&元组&字典&集合
    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片、合并、删除等操作 可通过索引来向指定位置插入元素 可通过pop()方法删除末尾元素,pop(索引...
    99+
    2023-01-30
    字典 列表 Python
  • Python 多线程抓取图片效率对比
    目的: 是学习python 多线程的工作原理,及通过抓取400张图片这种IO密集型应用来查看多线程效率对比 import requests import urlparse import os imp...
    99+
    2022-06-04
    多线程 效率 图片
  • Python列表、字典、元组和集合实例分析
    这篇文章主要介绍了Python列表、字典、元组和集合实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python列表、字典、元组和集合实例分析文章都会有所收获,下面我们一起来看看吧。列表1.列表什么是列表...
    99+
    2023-06-30
  • python列表、元组、字典、集合的简单
    1、常用操作函数 1 #Author:CGQ 2 import copy 3 #列表 4 ''' 5 names=["ZhangYang","XiaoHei","XiaoHei","LiSan"] 6 print(nam...
    99+
    2023-01-30
    字典 简单 列表
  • Python中数值比较的效率
    目录Python数值比较的效率不同python实现的效率比较1.取出内层容器的多个值2.字符串去掉结尾(开头)字符3. in 操作要用集合总结Python数值比较的效率 Python...
    99+
    2023-01-28
    Python数值比较效率 Python数值比较 Python效率
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作