
2.7 【实战】常用内置数据结构用法示例
Python提供了很多的数据类型,包括已经学习到的数值、字符串、列表等,以及还没有接触到的集合、字典等。有了这些基础知识,我们就可以解决一些稍微复杂的数据问题。本节的目的很明确,就是讨论和实战这些比较常见的问题和算法。

扫码观看教学视频
1.提取列表元素并赋值给多个变量
问题一:现在有一个包含N个元素的列表,怎么样才能把它里面的数值提取出来同时赋值给N变量?
解决方案:任何的列表都可以通过一个简单的赋值语句提取并赋值给多个变量。
例2-42 提取列表元素并赋值

2.查找最大或最小的N个元素
问题:如何从一个列表中获取最大或者最小的N个元素?
解决方案:这里我们要用两个新的函数nlargest和nsmallest,这两个函数都属于模块heapq的。
例2-43 查找最大或最小的N个元素

当查找的元素个数相对比较小的时候,使用函数nlargest和nsmallest非常合适。但是仅仅想查找唯一的最小元素或最大元素,使用min()和max()函数效率会更高些。注意,这两个函数使用了“堆”这种数据结构的知识,而堆的重要特征是heapq[0]永远是最小元素。
3.统计列表中出现次数最多的元素
问题:怎样才能找出一个列表中出现次数最多的元素呢?
解决方案:collections模块就是专门为这类问题而设计的,most_comman()函数可以直接给出答案。
例2-44 使用most_comman()函数统计列表中出现次数最多的元素

4.过滤列表元素
问题:如果有一个数据列表,我们想根据某些条件从中提取出需要的值或者是缩短列表,该怎么办呢?
解决方案:最简单的过滤序列元素的方法就是使用列表推导。
例2-45 使用列表推导过滤列表元素

5.合并多个列表
问题:现有多个列表,我们将把它们合并为一个单一的集合。
解决方案:一个很优雅的解决方法就是ChainMap函数。
例2-46 使用ChainMap函数合并列表元素

所谓的“内置”的数据类型就是指Python源代码自带的、不需要安装第三方模块就能直接使用的数据类型或者函数。这些内置数据类型是所有高级特性的基石,必须要牢牢掌握。