【发布时间】:2016-03-22 17:58:41
【问题描述】:
在这个关于iterating through a sequence of operators 的帖子之后,我还想以相同的顺序处理一元运算符。我使用了一个 lambda 函数来摆脱第二个参数,但是 Python 中是否有专门的工具/库呢?
a, b = 5, 7
for op in [('+', operator.add), ('-', lambda x, y: operator.neg(x))]:
print("{} {} {} = {}".format(a, op[0], b, op[1](a, b)))
【问题讨论】:
-
我认为你应该分别处理一元和二元,你想得到
5 - 7 = -5? -
@bigOTHER 是的,这就是我想要/得到的。当然,我可以为一元操作创建一个单独的循环。但也许有一种更 Pythonic 的方式/一些标准库来做到这一点。 (在 C++ 中,你有 bind1st 等等)
-
bind1st 在 python 中的替代品是
functools.partial但lambda神奇地完成了这项工作,所以更喜欢它。然而,在你的情况下,只需将它分开,在 python 基础可读性计数中
标签: python unary-operator binary-operators