Python里for循环要遍历的数据很多很大怎么办?

秘密课程2024-03-17 02:40:56  87

首先面对这个问题,对于初学者来说了解基础的数据结构是非常重要的。掌握了数据结构在去分析相应的程序执行效率,这才是学编程的第一步。

在《数据结构》这门学科中,栈、队列属于是逻辑结构,其他属于是存储结构,在我们日常生活或者工作中都会用到这几种数据结构,比如扑克牌的洗牌和发牌就是顺序堆栈的应用,学好《数据结构》这门课不仅仅可以提高知识的认知,还可以提高对某一事物的思考,提供更多的思维方式。

任何一门编程语言都要在《数据结构》的基础上进行开发语言设计。Python也是一样的,要搞明白Python如何处理大量的循环数据,就要明白Python有哪些数据结构以及如何使用它。

最难的事,就是遗忘简单的动作,把简单的事重复做到极致,就是量变到质变的过程。Python的学习也是一样的,知识很简单,但是长时间不用,不去思考,过个三年五载这些知识就会被忘记了,往往就是捡了玉米丢了芝麻,那么Python里for循环要遍历的数据很大如何处理呢?接下来,就让我们一起去了解每一个数据结构的语法特性吧。

String和Number

String

# 记录开始时间sstart_time = time.time# 字符串string = "01234579"for s in string:print(s)# 记录结束时间send_time = time.time# 计算并打印执行时间sexecution_time = send_time - sstart_timeprint(f"string executed in {sexecution_time:4f}s")

采用字符串的方式,for循环数据,通过下图

可以得知,字符串类型,十个字符的执行时间为0.000724s.

Number

# 记录开始时间istart_time = time.time# numberfor n in range(0,10):print(n)# 记录结束时间iend_time = time.time# 计算并打印执行时间iexecution_time = iend_time - istart_timeprint(f"number executed in {iexecution_time:4f}s")

数值类型的方式,for循环数据,通过下图

可以得知,数值类型,从0-9十个数字的执行时间为0.000686s

可以看出整形占24个字节、字符串占49个字节

# 整型print(sys.getsizeof(0)) # 在32位机器上通常是24个字节,64位机器上是28个字节print(sys.getsizeof(""))

在处理整形数据的时候使用了range函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。是不是可以理解以后所有的数据都可以通过字符串类型来遍历数据呢?!字符串虽然使用方法简单,但是有它的不方便之处。如果相对简单的数据,可以采用字符串来使用,如果涉及到复杂的数据,字符串就没办法应对了,就需要转换成其他数据类型了,比如如下程序:

string = "0,1,2,3,4,5,7,8,9,10"string_split = string.split(",") # 拆分成字符串列表for s in string_split:print(s)

面对复杂的数据类型,字符串就没办法处理,就需要转换成列表了。那么列表和元组我们如何看待呢?

列表和元组

列表

import timeimport sys# 记录开始时间lstart_time = time.time# 列表lists = list(range(10))for l in lists:print(l)# 记录结束时间lend_time = time.time# 计算并打印执行时间lexecution_time = lend_time - lstart_timeprint(f"list executed in {lexecution_time:4f}s")

列表作为常用的数据类型,通过程序执行可以看出

列表类型,从0-9十个数字的执行时间为0.000987s

元组

# 记录开始时间tstart_time = time.time# 元组tuple = (0,1,2,3,4,5,6,7,8,9)for t in tuple:print(t)# 记录结束时间tend_time = time.time# 计算并打印执行时间texecution_time = tend_time - tstart_timeprint(f"tuple executed in {texecution_time:4f}s")

元组作为一个基础的数据类型,通过程序的执行

可以看出,执行的效率时0.000502s

通过本次的结果验证tuple>range>string>list当然这个结果并不是唯一的,真实开发环境下,还要服务器性能问题以及时间复杂度问题。如果你对人工智能有所了解你会发现矩阵的表现形式其实就是tuple类型。

在真实开发中可能会考虑数据的完整性问题,会考虑使用集合、字典、生成器、迭代器等,这些都是在Python中常用的处理大数据的方法,当然也可以采用并发操作,优化程序的时间复杂度,以及借助Cython的方式编写C语言的扩展,这些内容由于时间的问题,不会讲解,在余后的时间内会娓娓给大家道来的。

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/7590.html
0
随机主题
决胜局终极绝杀,希金斯再现巅峰时刻,翻袋助力单局逆转墨西哥一场总统竞选活动发生舞台倒塌事故 数十人死伤美专家: 中国军事实力世界第二! 与俄罗斯谁常规武器更胜一筹?口碑公认的三款手机, 入手仅千元价位张鹤伦被郭德纲拒绝3回, 如果不是师娘帮助, 可能还在做保安硬核技术: 华为不再依赖英特尔和高通芯片, 任正非的硬气从何而来!东方财富网股吧社区将开展内容专项治理合砍63分逆转! 欧文再现超强得分能力, 东契奇关键中投赢球英国国防大臣称: 欧洲的中立国如果还想得到保护, 就必须加入北约一句“可远程瘫痪”, 西方警醒了我们, 中国一定要有自己的光刻机王红权星近三月直播13场销售额超2500万:卖每瓶3000元的洗发水喜讯! 叶檀说自己复查又一个120分! 网友: 希望蔡磊也有好运气!39秒71夺亚洲冠军! 中国短跑接力再创历史, 苏炳添队友们厉害了升级了!博尔特空中回旋踢米体: 两位独立董事将辞职, 马洛塔&安东内洛有望留在国米董事会澳媒文章: 从义乌看中国供应链强大韧性美联储公布5月会议纪要 通胀风险仍需高度关注丨从华尔街到陆家嘴事情正在起变化, 欧洲这次狠狠打脸美国开国少将在会上警告江青, 会后被诬陷, 反而因祸得福安享晚年BG推文《拉上始皇去造反》女帝文,超有野心一门心思造反的女主没想到她居然造的自己亲爹的反,收服的大才是自己的亲爹9C秘籍 | 让竞争对手认知超越你的10大方法
最新回复(0)