跳转到主要内容

用于分割或分区序列的函数。

项目描述

用于分割和分区序列的函数。

安装

pip install split

用法

此模块中的所有函数都返回迭代器,并按需消耗输入。以下示例中,结果使用listdict强制执行。

等大小块

要按等大小块分区序列,请使用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 (7.4 kB 查看哈希值)

上传时间

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误记录StatusPageStatusPage状态页