【问题标题】:How to interpret the operators modulo/% and equality/== in the same line?如何在同一行中解释运算符 modulo/% 和 equal/==?
【发布时间】:2021-05-10 23:06:28
【问题描述】:
def has_lucky_number(nums):
      return any([num % 7 == 0 for num in nums])

【问题讨论】:

  • 首先计算num % 7,然后检查结果是否等于0
  • 百分号 (%) 是一个运算符,可为您提供欧几里得除法的余数。例如10 % 3 == 1,因为10 = 3 * 3 + 1
  • 谢谢你们!

标签: python operators operator-precedence


【解决方案1】:

列表理解(如果您还不知道,这是您需要搜索以了解其工作原理的实际术语)[num % 7 == 0 for num in nums] 将为您提供TrueFalse 值的列表,其中一个用于原始列表中的每个数字nums

每个条目将是 True 当且仅当 nums 中的对应条目是 7 的倍数,因为 x % 7 是您将 x 除以 7 时的余数 - 如果余数为零,则number 是一个倍数。就读表达式本身而言,num % 7 == 0在功能上等价于(num % 7) == 0

例如,[1, 5, 7, 9, 14, 22] 的原始列表将为您提供结果列表 [False, False, True, False, True, False],因为该列表中只有 714 满足条件。

接下来,如果列表中的任何元素为真,表达式any(someList) 将返回True

因此,给定的整个函数将简单地检测列表中的 any 元素是否是 7 的倍数,在这段代码的上下文中显然被认为是“幸运的”。

【讨论】:

    【解决方案2】:

    检查文档以了解操作优先级 https://docs.python.org/3/reference/expressions.html#evaluation-order

    您可以在表格中看到 mult/div(或 % 模数)发生在比较之前(== 和

    【讨论】:

      猜你喜欢
      • 2017-03-23
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      相关资源
      最近更新 更多