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

Python列表和集合的效率大比拼

2024-04-02 19:04:59 718人浏览 泡泡鱼

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列表和集合的效率对比的文章就介绍到这了,更多相关Python列表和集合内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

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

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

猜你喜欢
  • Python列表和集合的效率大比拼
    目录程序运行效率数据查找效率数据存储开销程序运行效率 程序的运行效率分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要...
    99+
    2024-04-02
  • Python列表和集合的效率对比
    程序运行效率程序的运行效率分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。时间复杂度主要衡量的是一个程序的运行速度,而空间复杂度主要衡量一个程序所需要的额外存储空间。一个程序执行所耗费的时...
    99+
    2023-05-14
    列表 Python 集合
  • Python列表和集合效率源码对比分析
    这篇“Python列表和集合效率源码对比分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python列表和集合效率源码对比...
    99+
    2023-07-06
  • python列表处理效率对比测试
    #!/usr/bin/env import datetime class adair: def test1(n): lst=[] for i in range(n*10000): ...
    99+
    2023-01-31
    效率 对比测试 列表
  • 关于Python元祖,列表,字典,集合的比较
    定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来...
    99+
    2022-06-04
    元祖 字典 列表
  • Java集合中contains方法的效率对比分析
    最近让部门技术大佬帮忙代码review的时候,他给我指出了一个小的技术细节,就是对于集合的contains方法尽量选用Set而不是List,平时没怎么注意,仔细看了下源码,大佬就是大...
    99+
    2024-04-02
  • String字符串拼接方法concat和+的效率对比
    目录两个方法效率计算代码如下多次测试结果如下字符串拼接 和concat的区别两个方法效率计算代码如下 public static void main(String[] args)...
    99+
    2024-04-02
  • python 列表,集合和字典的增删改查
    目录一 列表二 集合三 字典总结 一 列表 # 列表:包含0个或多个对象引用的有序队列,用中括号[]表示 # 增加 a = [] a.append(1) # a.append...
    99+
    2024-04-02
  • python中集合和列表的区别是什么
    在Python中,集合和列表是两种不同类型的数据结构,它们之间有一些重要的区别: 列表是有序的,元素按照插入的顺序进行存储,可以...
    99+
    2024-04-02
  • python如何使用集合和列表统计
    这篇文章主要介绍python如何使用集合和列表统计,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用集合(set)和列表(list)统计先用 set 去重,然后循环把每一个元素和对应的次数&nbs...
    99+
    2023-06-27
  • Python元素集合的列表切片
    目录一、列表切片(Slicing)二、基础实例三、带有负索引的切片 (Slice with Negative Indices)四、带有正负索引的切片五、指定切片step六、负步长七、...
    99+
    2024-04-02
  • SQL和Python的集合操作对比
    本篇内容主要讲解“SQL和Python的集合操作对比”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL和Python的集合操作对比”吧!集合操作分析式问题通常...
    99+
    2024-04-02
  • python 如何比较两集合的大小关系
    我就废话不多说了,大家还是直接看代码吧~ print({1, 2} > {1}) # True 补充:Python——集合是一个非常之牛逼的数据比较方式 什么是集合?对...
    99+
    2024-04-02
  • 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元素集合的列表切片实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、列表切片(Sl...
    99+
    2023-06-29
  • Python可变集合和不可变集合的构造方法大全
    目录一、对比数据类型 二、可变集合构造方法 三、不可变集合的构造方法 四、集合构造注意事项  Python集合又是一种新的数据类型,集合有两种形式:可变集合(set())和不可变集合...
    99+
    2024-04-02
  • Python实现列表拼接和去重的三种方式
    目录列表拼接三种方式 方式一:简简单单的“+” 方法二:切片赋值 方式三:列表自带的extend() 列表去重的三种方式 利用集合set的特性 利用字典key的不可重复属性 利用in...
    99+
    2024-04-02
  • Python中列表,元组,字典和集合之间怎么转换
    本篇内容主要讲解“Python中列表,元组,字典和集合之间怎么转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中列表,元组,字典和集合之间怎么转换”吧!前排提示:元祖是错误的写法(...
    99+
    2023-06-30
  • Python字符串,列表,字典和集合实例处理分析
    今天小编给大家分享一下Python字符串,列表,字典和集合实例处理分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.如何...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作