Python 里 for 循环要遍历的数据很多很大怎么办?
首先面对这个问题,对于初学者来说了解基础的数据结构是非常重要的。掌握了数据结构在去分析相应的程序执行效率,这才是学编程的第一步。
在《数据结构》这门学科中,栈、队列属于是逻辑结构,其他属于是存储结构,在我们日常生活或者工作中都会用到这几种数据结构,比如扑克牌的洗牌和发牌就是顺序堆栈的应用,学好《数据结构》这门课不仅仅可以提高知识的认知,还可以提高对某一事物的思考,提供更多的思维方式。
任何一门编程语言都要在《数据结构》的基础上进行开发语言设计。Python 也是一样的,要搞明白 Python 如何处理大量的循环数据,就要明白 Python 有哪些数据结构以及如何使用它。
最难的事,就是遗忘简单的动作,把简单的事重复做到极致,就是量变到质变的过程。Python 的学习也是一样的,知识很简单,但是长时间不用,不去思考,过个三年五载这些知识就会被忘记了,往往就是捡了玉米丢了芝麻,那么 Python 里 for 循环要遍历的数据很大如何处理呢?接下来,就让我们一起去了解每一个数据结构的语法特性吧。
String 和 Number
String(字符串)
采用字符串的方式,for 循环数据,通过下图
可以得知,字符串类型,十个字符的执行时间为0.000724s
.
Number(数值类型)
数值类型的方式,for 循环数据,通过下图
可以得知,数值类型,从 0-9 十个数字的执行时间为0.000686s
可以看出整形占 24 个字节、字符串占 49 个字节
在处理整形数据的时候使用了range()
函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。是不是可以理解以后所有的数据都可以通过字符串类型来遍历数据呢?!字符串虽然使用方法简单,但是有它的不方便之处。如果相对简单的数据,可以采用字符串来使用,如果涉及到复杂的数据,字符串就没办法应对了,就需要转换成其他数据类型了,比如如下程序:
面对复杂的数据类型,字符串就没办法处理,就需要转换成列表了。那么列表和元组我们如何看待呢?
列表和元组
列表
列表作为常用的数据类型,通过程序执行可以看出
列表类型,从 0-9 十个数字的执行时间为0.000987s
.
元组
元组作为一个基础的数据类型,通过程序的执行
可以看出,执行的效率时0.000502s
.
通过本次的结果验证tuple>range>string>list
当然这个结果并不是唯一的,真实开发环境下,还要服务器性能问题以及时间复杂度问题。如果你对人工智能有所了解你会发现矩阵的表现形式其实就是 tuple 类型。
在真实开发中可能会考虑数据的完整性问题,会考虑使用集合、字典、生成器、迭代器等,这些都是在 Python 中常用的处理大数据的方法,当然也可以采用并发操作,优化程序的时间复杂度,以及借助 Cython 的方式编写 C 语言的扩展,这些内容由于时间的问题,不会讲解,在余后的时间内会娓娓给大家道来的。
版权声明: 本文为 InfoQ 作者【算法的秘密】的原创文章。
原文链接:【http://xie.infoq.cn/article/2655eb4e8844bbd3ace4518e5】。文章转载请联系作者。
评论