
上QQ阅读APP看书,第一时间看更新
练习15:迭代器介绍
为了生成数字列表,我们可以采用不同的方法。
1.生成一个包含10000000个1的列表:

2.检查变量的大小:

它显示的值大约是81528056(以字节为单位),这需要很多内存!只有当列表推导式结束后,变量big_list_of_numbers的值才可使用。如果尝试过大的数字,它会溢出系统的可用内存。
3.使用迭代器降低内存利用率:

最后一行显示small_list_of_numbers的大小只有56字节。这是一个懒惰方法,因为它没有生成所有元素。它会在被要求时逐个地生成它们,从而节省我们的时间。实际上,如果省略times关键字参数,那么实际上可以生成无限多的1。
4.循环新生成的迭代器:

我们使用enumerate函数以便得到循环计数器及其值。这有助于我们在计数器达到一定数量时(例如10)跳出循环。
输出将是10个1的列表。
5.查找任何一个函数的定义,首先请键入函数名并以“?”结尾,然后按Shift+Enter键进入Jupyter notebook。运行以下代码了解如何使用itertools的permutations(排列)和combinations(组合):
