开发者社区> 问答> 正文

清理数学符号或将int值转换为0或1

也许这是一个琐碎的问题,但是如果有一种更优雅的方法可以在不使用条件或类型转换的情况下将int值转换为0或1的话,我找不到答案? 现在我只有以下几种变体,而且都很丑陋:

x = 5
a = some_int_value * (1 if x > 0 else 0)
b = some_int_value * int(bool(x))
  • ADDED * x 为非负值。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-25 09:24:39 3623 0
1 条回答
写回答
取消 提交回答
  • 没有函数,强制转换或条件但具有 比较的另一种方式:

    d = some_int_value * (x > 0)
    

    但是,就可读性而言,三元... if ... else ...应该更可取。

    *如果您希望使用纯数学方法,则可以使用1-0 x的幂运算,因为只有当 x == 0和0时,0 * x才是1 。但是,这是否以任何方式清楚是另一个问题。(还要注意,这为x <0除以零,但是您说您没有这些。) >>> x = 5 >>> 1 - 0*x 1 >>> x = 0 >>> 1 - 0*x 0

    回答来源:stackoverflow

    2020-03-25 09:24:45
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载