用于分割或分割序列的函数。
split的Python项目详细描述
用于拆分和分区序列的函数。
安装
pip install split
用法
此模块中的所有函数都返回迭代器,并使用输入 懒洋洋的。在下面的示例中,使用^{tt1}强制结果$ 和dict。
大小相等的块
要将序列分成大小相等的块,请使用chop:
>>> from split import chop >>> list(chop(3, range(10))) [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]
如果给定了truncate=True关键字参数,则序列长度为 截断为块大小的倍数,并且所有块都具有相同的 尺寸:
>>> list(chop(3, range(10), truncate=True)) [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
谓词的子序列
要通过给定的谓词将序列分成两部分,请使用partition:
>>> from split import partition >>> def odd(x): return x%2 >>> map(list, partition(odd, range(5))) [[1, 3], [0, 2, 4]]
对于更一般的分区,请使用groupby:
>>> [(k, list(i)) for k,i in groupby(lambda x: x%3, range(7))] [(0, [0, 3, 6]), (1, [1, 4]), (2, [2, 5])]
此函数与itertools.groupby不同:它只返回 每个谓词值一个子序列迭代器。它的返回值可以是 转换成字典。
当处理非常长的序列时,考虑使用 predicate_values关键字参数,以避免扫描整个 顺序。例如:
>>> longseq = xrange(int(1e9)) >>> pred = lambda x: x%3 >>> dict(groupby(pred, longseq, predicate_values=(0,1,2))) {0: <generator object subsequence at 0x301b7d0>, 1: <generator object subsequence at 0x301b780>, 2: <generator object subsequence at 0x301b730>}
分离器破裂
要在某些分隔符上将序列分成块,请使用split。为了 例如,在零元素上断开:
>>> list(split(0, [1,2,3,0,4,5,0,0,6])) [[1, 2, 3], [4, 5], [], [6]]
也可以将函数用作谓词:
>>> list(split(lambda x: x==5, range(10))) [[0, 1, 2, 3, 4], [6, 7, 8, 9]]