Python 用islice()选取子集,前面使用了切片符号从集合中选取子集,当时是将一个列表对象中的元素组对。例如对于下面这个简单的列表:
可以通过列表切片创建数据对:
借助islice()
函数则无须实例化列表对象就能实现相同的功能,处理任意大小的可迭代对象,如下所示:
这里基于一维数据点列表创建了两个独立的迭代器,它们可能是遍历打开的文件或者数据库结果集的两个迭代器。两个迭代器必须彼此独立,以保证一个
islice()
函数的变动不会影响另一个islice()
函数。
islice()
函数的两组输入参数与flat[0::2]
和flat[1::2]
表达式类似。由于没有切片符号式的简写形式,必须指明起始参数和结束参数,步长值可以省略,而取默认值1。上面的代码返回由二元组组成的数据序列:
由于islice()
函数返回迭代器,所以可用于处理巨大的数据集,例如从一个大型数据集中提取一个子集。除了使用filter()
函数和compress()
函数,还可以用islice(source, 0, None, c)
从大型数据集中提取 个数据项。