【问题标题】:Python binary to unary functionPython二进制到一元函数
【发布时间】: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.partiallambda 神奇地完成了这项工作,所以更喜欢它。然而,在你的情况下,只需将它分开,在 python 基础可读性计数中

标签: python unary-operator binary-operators


【解决方案1】:

只需将二元和一元运算符的处理分开即可。

a, b = 5, 7
# binary ops
for op in [('+', operator.add), ('-', operator.sub]:
    print("{} {} {} = {}".format(a, op[0], b, op[1](a, b)))

#unary ops
for op in [('-', operator.neg]:
    print("{} {} = {}".format(op[0], a, op[1](a)))

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 2012-10-08
    • 2022-11-14
    • 2012-12-14
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多