包装器模块,为iterable对象提供中缀样式的方法链接。

chainreaction的Python项目详细描述


关于本模块

包装器模块,为iterable对象提供中缀样式的方法链接。

未读:

>>> 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)
https://secure.travis-ci.org/keitaoouchi/chainreaction.png

如何安装

需要python2.6或更高版本(包括python3.x)。 您需要pipdistributesetuptools

$ pip install chainreaction

或使用简易安装:

$ easy_install chainreaction

最近更改

0.2.0

  • 支持python2.6。
  • 已更改为在python2.x中的“chainable.filter/map”方法中使用itertools。

0.1.2

  • 支持“for”语句。

如何使用

使用此模块最简单也是唯一的方法是调用react函数。 react是一个工厂函数,它查找'''''uu iter'/''''uu getitem' 从给定的iterable返回包装对象。

使用示例:

>>> from chainreaction.reactor import react
>>> react("hello")
>>> react([1, 2, 3])
>>> react(iter([1, 2, 3])
>>> class DictLike(dict):pass
>>> react(DictLike())

可链接对象支持其包装对象的任何方法, 尝试包装它们的返回值。 按照惯例,side-effective方法只返回可链接的对象 返回用适当的包装器包装的受侧边影响的对象。 如果迭代器被传递到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

  • 展开
    从包装对象检索iterable。
  • 转储
    元素转储。
  • 致畸器
    如果包装的对象是迭代器,则为true。
  • 到字符串
    返回与“.join”((iterable中x的str(x))几乎相同的结果)。此方法始终返回str对象。str wrapped返回unwrapped,bytes或bytearray wrapped返回str converted,dict wrapped返回与“&;”连接的“key=value”对。
  • foreach(f)
    将给定的f应用于所有元素。
  • 过滤器(pred)
    选择满足给定谓词的所有元素。
  • 地图(f)
    通过应用给定的f来生成新集合。
  • 所有(pred)
    如果所有元素满足给定谓词,则为true。
  • 对于任何(pred)
    如果任何元素满足给定谓词,则为true。
  • 下降时间(pred)
    删除满足给定谓词的元素的最长前缀。
  • 右下角(pred)
    删除满足给定谓词的元素的最长后缀。
  • 羚羊(pred)
    取满足给定谓词的元素的最长前缀。
  • 正确(pred)
    取满足给定谓词的元素的最长后缀。
  • mkstring(joiner=)
    使用连接符字符串返回包装的str对象。
  • 计数(pred=lambda x:true)
    计算满足给定谓词的元素数。
  • 包含(键)
    测试此包装对象是否包含作为元素的给定键。
  • 减少(f)
    使用给定的f返回一个值(未包装)。

特定于迭代器的api

  • 列表
    返回包装好的新列表。
  • 三倍
    返回包装的新元组。
  • 设置
    返回包装的新集合。

str,字节,bytearray特定的api

  • 混响硒
    返回一个新的反向str wrapped。

序列特定API

  • 累加(f)
    返回一系列累积值。
  • 倒车
    返回一个新的反向seq wrapped。
  • 排序
    返回一个新的排序顺序包装。
  • 设置
    返回包装的新集合。

设置特定的api

  • 最小值
    返回最小值。
  • 最大值
    返回最大值。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Android Wifi中筛选相同的SSID?   Java中重写接口中异常处理的泛型   java“无效转义序列(有效的是\b\t\n\f\r\”\“\”\)”语法错误   使用JNDI的java NameReadyBoundException   java如何在这个程序上执行算法   java为什么我的应用程序在调试时崩溃而应用程序停止?   Java:while循环未检测到中断条件,但如果块检测到   java如何快速使用jfreechart创建的折线图   java将输入放入JSTL会话变量,以便稍后在屏幕上显示   java在spring boot中加载外部JAR   java Apache NiFi无法使用ojdbc6连接到Oracle 12c。jar或ojdbc8。罐子   java解释StringToWordVector()Weka的输出   java charAt()找不到符号   使用mpjexpress的java阅读控制台输入