Python 平铺数据并映射,前面介绍了将嵌套元组平铺为简单可迭代对象的算法。当时的目标只是改变数据结构,没有对数据做实质性处理,下面介绍如何将处理函数和平铺操作结合起来。
假设需要把如下文本转换为一维数值序列:
每行包含10个数据,接下来要把所有行合并为一个数值序列。
通过下面这个由两部分组成的生成器函数实现数据转换:
首先将整个文本分为多行,遍历每一行。在一行中,再将文本分为许多词组,输出是一个字符串列表,如下所示:
除了改变格式,为了将字符串转换为数值,还需要增加一个转换函数,如下所示:
该函数有个conversion
参数,作为转换函数,处理前面平铺算法生成的每个值。
如下所示使用numbers_from_rows()
函数:
这里使用内置函数float()
将一段文本转换为了一个浮点数列表。
可以将高阶函数和生成器表达式相结合来改写上面的函数,如下所示:
这种实现方法有助于我们理解算法的整体结构。采用组块原则,函数的具体实现通过一个有意义的名字进行抽象,然后将其用于新的上下文中。虽然通常使用高阶函数,但某些情况下使用生成器表达式能使算法更简便。