学记在这两天将自己产生的知识漏洞给打了个补丁,之前写出的文章可能会有一些纰漏,在这里,学记对大家说一声抱歉了。
今天学记就把这两天找出的纰漏,全部都写出来,供大家参考,为大家下一步的学习做好铺垫。
1使用列表的生成式语法来创建列表
在这一个漏洞里,我们来重新把这一段的知识来进行补足。
创建列表不仅可以将列表按照原始的方法一个一个将值输入,也可以用生成式语法来创建。
比方说像下面这一段代码
f = [x for x in range(1, 10)]
这一行代码的输出结果是创建了一个列表f
f中有从1到9 的九个数字
也就是将变量 X 列举了出来
这一行代码也可以说明如何创建列表
f = [x + y for x in 'AB' for y in '123']
它的输出结果是
['A1', 'A2', 'A3', 'B1', 'B2', 'B3']
两个变量的列表创建就是将前一个变量按照 A B来取值,后一个变量按照 1 2 3 来取值结合起来,组合排列。
按照这种方法来创建列表,因为它们的元素已经列举出来了,所以这种创建方式在元素数量众多的情况下,是需要耗费较多的内存空间。
那么有没有一种函数可以在占据较少的内存空间情况下,也可以提供元素呢?
答案是有的。
这里我们引入一个新的概念:生成器。
何为生成器?
生成器是一个一边循环,一边计算的函数机制,英文为:Generator.
它可以在你需要的时候通过特殊的算法来进行提取所需的元素,而它又不需要把所有的元素都列举出来,所以节省了巨大的空间。
它的创建方法有很多种,今天我们先了解最简单的一种,创建方法与上面的代码类似,就是把符号换了,把[]换成了()。
代码如下:
f = (x ** 2 for x in range(1, 1000))
这样就创建了一个生成器
其中的元素可以用next()和for in来进行提取
比如 next(g) 和 for n in g
这两种都可以提取生成器中的元素。
2 元组的不可变性带来的优点
元组内的元素是不可变的,它自创建开始到删除都是不能变的,因此在一些任务处理中,比如大量数据的归总,分门别类,有些固定的字眼就可以用元组来处理,减轻了数据处理的压力,给程序的维护性带来了很大的益处。
况且,因为元组的元素是不可变的,创建同样元素的元组和列表,元组所占的内存空间和响应速度要大大优于列表。
青年学记 陪伴着各位青年
作者:青年学记 一名不断进步的程序猿
一起学习 一起进步
走向自立
领取专属 10元无门槛券
私享最新 技术干货