- Python数据整理
- (美)提尔塔吉奥蒂·萨卡 (印)舒布哈迪普·罗伊乔杜里
- 363字
- 2025-02-14 17:47:26
练习15:迭代器介绍
为了生成数字列表,我们可以采用不同的方法。
1.生成一个包含10000000个1的列表:
![](https://epubservercos.yuewen.com/63BD11/17517093106688706/epubprivate/OEBPS/Images/024-2-i.jpg?sign=1739683144-aR7Jm2O3tW169gmESFBzg7ZGM9LEZeaS-0-dd1d1cf41f202c0eed9dda1d58483568)
2.检查变量的大小:
![](https://epubservercos.yuewen.com/63BD11/17517093106688706/epubprivate/OEBPS/Images/024-3-i.jpg?sign=1739683144-hIPNeLvgYJ6YdvFpCCew2YAkzeCXeUGU-0-a6d3a4d0d8d430403f6d7082a033f811)
它显示的值大约是81528056(以字节为单位),这需要很多内存!只有当列表推导式结束后,变量big_list_of_numbers的值才可使用。如果尝试过大的数字,它会溢出系统的可用内存。
3.使用迭代器降低内存利用率:
![](https://epubservercos.yuewen.com/63BD11/17517093106688706/epubprivate/OEBPS/Images/024-4-i.jpg?sign=1739683144-SgyPW8lNPJ0aMsPdqjiKe8tkQEVCNtmd-0-2af46fb2b473fe0c1a59d08a96b68fd2)
最后一行显示small_list_of_numbers的大小只有56字节。这是一个懒惰方法,因为它没有生成所有元素。它会在被要求时逐个地生成它们,从而节省我们的时间。实际上,如果省略times关键字参数,那么实际上可以生成无限多的1。
4.循环新生成的迭代器:
![](https://epubservercos.yuewen.com/63BD11/17517093106688706/epubprivate/OEBPS/Images/025-i.jpg?sign=1739683144-BbPx1mzTNG4CgvhwlHtPe2hpcXIXcV9T-0-63b1854c8d23772e86fcec5d7f2488f7)
我们使用enumerate函数以便得到循环计数器及其值。这有助于我们在计数器达到一定数量时(例如10)跳出循环。
输出将是10个1的列表。
5.查找任何一个函数的定义,首先请键入函数名并以“?”结尾,然后按Shift+Enter键进入Jupyter notebook。运行以下代码了解如何使用itertools的permutations(排列)和combinations(组合):
![](https://epubservercos.yuewen.com/63BD11/17517093106688706/epubprivate/OEBPS/Images/025-2-i.jpg?sign=1739683144-uE1AufcVfh04xumJ0Nxet3n6W5IKtbhO-0-2ad04008d273ff9e94d70e01abd3d52e)