包装器模块,它为可迭代对象提供中缀样式方法链接。
项目描述
关于本模块
包装器模块,它为可迭代对象提供中缀样式方法链接。
不可读:
>>> filter(lambda y: y % 2, map(lambda x: x + 1, iterable))
可读性:
>>> iterable = react(iterable) >>> iterable.map(lambda x: x + 1).filter(lambda y: y % 2)
如何安装
需要 python2.6 或更高版本(包括 python3.x)。您需要pip或分发或setuptools:
$ pip install chainreaction
或使用easy_install:
$ easy_install chainreaction
最近更改
0.2.0
支持 python2.6 。
更改为在 python2.x 的“Chainable.filter/map”方法中使用 itertools。
0.1.2
支持“for”语句。
如何使用
使用这个模块最简单也是唯一的方法是调用react函数。 react是一个工厂函数,它从给定的 iterable 中查找'__iter__' / '__getitem__' 并返回包装的对象。
使用示例:
>>> from chainreaction.reactor import react
>>> react("hello")
>>> react([1, 2, 3])
>>> react(iter([1, 2, 3])
>>> class DictLike(dict):pass
>>> react(DictLike())
Chainable 对象支持其被包装对象的任何方法,并尝试包装它们的返回值。按照惯例,有效的方法不返回任何内容,但可链接对象返回用适当的包装器包装的受影响的对象。如果将迭代器传递给react,它将在调用任何迭代方法时被消耗。
使用示例:
>>> tobewrapped = "hello" >>> wrapped = react(tobewrapped) >>> wrapped = wrapped.upper().map(lambda c: ord(c)) >>> [chr(c) for c in wrapped.unwrap] = [c for c in tobewrapped.upper()] True >>> tobewrapped = [1, 2, 3] >>> wrapped = react(tobewrapped) >>> wrapped.append(4).count() 4 >>> len(tobewrapped) 4
如果给出了一个迭代器,这个迭代器将在它调用任何方法时被消耗:
>>> tobewrapped = iter([1,2,3]) >>> wrapped = react(tobewrapped) >>> wrapped.count() 4 >>> len(list(tobewrapped)) 0
微小百分比编码实现示例:
>>> test = bytes("hello world-._~", encoding="UTF-8")
>>> wrapped = react(test)
>>> safe = set()
>>> react("0123456789").foreach(lambda c: safe.add(ord(c)))
>>> react(range(ord('a'), ord('z') + 1)).foreach(lambda b: safe.add(b))
>>> react(range(ord('A'), ord('Z') + 1)).foreach(lambda b: safe.add(b))
>>> react("-._~").foreach(lambda c: safe.add(ord(c)))
>>> test = wrapped.map(lambda b: b if b > 0 else 256 + b)
>>> test = test.map(lambda i: '+' if chr(i).isspace() else chr(i) if i in safe else "%{0:x}".format(i))
>>> test.tostring == "hello+world-._~"
True
基本 API
- 展开
从包装的对象中检索可迭代的。
- 倾倒
元素转储。
- 迭代器
如果包装的对象是迭代器,则为真。
- 字符串
返回与“”几乎相同。join((str(x) for x in iterable))。此方法始终返回 str 对象。str 包装返回未包装,字节或 bytearray 包装返回 str 转换,dict 包装返回“key=value”对与“&”连接。
- 前锋(女)
将给定的 f 应用于所有元素。
- 过滤器(预)
选择满足给定谓词的所有元素。
- 地图(f)
通过应用给定的 f 构建一个新集合。
- forall(预测)
如果所有元素都满足给定的谓词,则为真。
- forany(预)
如果任何元素满足给定谓词,则为真。
- dropwhile(pred)
删除满足给定谓词的元素的最长前缀。
- dropright(预测)
删除满足给定谓词的元素的最长后缀。
- takwhile(pred)
采用满足给定谓词的元素的最长前缀。
- 夺权(pred)
采用满足给定谓词的元素的最长后缀。
- mkstring(joiner="")
使用连接字符串返回包装的 str 对象。
- 计数(pred=lambda x:真)
计算满足给定谓词的元素数。
- 包含(键)
测试此包装对象是否包含给定键作为元素。
- 减少(f)
使用给定的 f 返回一个值(未包装)。
特定于迭代器的 API
- 列表
返回一个包装好的新列表。
- 元组
返回一个新包装的元组。
- 设置
返回一个包装好的新集合。
str, bytes, bytearray 特定 API
- 撤销
返回一个新的反向 str 包装。
序列特定 API
- 累积(f)
返回一个累积值的序列。
- 撤销
返回一个新的反向 seq 包装。
- 种类
返回一个新的排序的 seq 包装。
- 设置
返回一个包装好的新集合。
设置特定的 API
- 分钟
返回最小值。
- 最大限度
返回最大值。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
chainreaction-0.2.0.zip的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 65eb0b486c5939c14e7248a0649b3ce46496a11c85546bed337d5be82c68196c |
|
| MD5 | 4a25e4f2c8c15735962e3ac8a1aac99a |
|
| 布莱克2-256 | 7f1aea637cce5c76f1412cc36302d98aee4eb81b317807731b258cc680ba66c6 |
chainreaction -0.2.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | a064ecdd518613a657c61b4701e29946b05e4d4a15082d58d1d8121262d55da0 |
|
| MD5 | d8032c17090c7aa4e67e12b4a7bd04f8 |
|
| 布莱克2-256 | dbc0343836dc4c00094d366790adfe73b00b8ecb7947ad668dd60f105e6063dd |