用于分割或分区序列的函数。
项目描述
用于分割和分区序列的函数。
安装
pip install split
用法
此模块中的所有函数都返回迭代器,并按需消耗输入。以下示例中,结果使用list和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]]
项目详情
关闭
split-0.4.zip的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c4be970a857d605d94999da18779bc10c34a34f937dede983268de3877b81faa |
|
MD5 | 16e72d45b66b0f8da2349be0f82d5216 |
|
BLAKE2b-256 | ebbe58a8c908989560360b69b9cc7537c9fbe9d1fc5f791806cfc0d0eeae31f0 |