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


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

列表理解(如果你还不知道,这是你需要搜索的实际术语,看看它是如何工作的([num % 7 == 0 for num in nums]会给你一个TrueFalse值的列表,原始列表nums中的每个数字都有一个值。

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

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

之后,如果列表中的任何元素为true,则表达式any(someList)将返回True

因此,给定的整个函数将简单地检测列表中的任何元素是否是7的倍数,显然被认为是"0";幸运的";在本代码的上下文中。

检查文档中的操作优先级https://docs.python.org/3/reference/expressions.html#evaluation-订单

您可以在表中看到,mult/div(或%modulo(发生在比较(==和<=等(之前,因此在"=="之前评估"%"。

最新更新