如何解释同一行中的运算符 modulo/% 和 equality/==?

How to interpret the operators modulo/% and equality/== in the same line?

def has_lucky_number(nums):
      return any([num % 7 == 0 for num in nums])

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

您可以在 table 中看到 mult/div(或 % 模)发生在比较(== 和 <= 等)之前,因此 '%' 在 '= 之前计算='是。

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

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

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

之后,如果列表中的任何元素为真,表达式 any(someList) 将 return True

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