def has_lucky_number(nums):
return any([num % 7 == 0 for num in nums])
列表理解(如果你还不知道,这是你需要搜索的实际术语,看看它是如何工作的([num % 7 == 0 for num in nums]
会给你一个True
或False
值的列表,原始列表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]
,因为该列表中只有7
和14
满足条件。
之后,如果列表中的任何元素为true,则表达式any(someList)
将返回True
。
因此,给定的整个函数将简单地检测列表中的任何元素是否是7的倍数,显然被认为是"0";幸运的";在本代码的上下文中。
检查文档中的操作优先级https://docs.python.org/3/reference/expressions.html#evaluation-订单
您可以在表中看到,mult/div(或%modulo(发生在比较(==和<=等(之前,因此在"=="之前评估"%"。