问题描述
def has_lucky_number(nums):
return any([num % 7 == 0 for num in nums])
解决方法
列表推导式(这是您需要搜索以了解其工作原理的实际术语,如果您还不知道的话)[num % 7 == 0 for num in nums]
将为您提供 True
或 {{1 }} 值,原始列表 False
中的每个数字对应一个。
每个条目都是 nums
当且仅当 True
中的相应条目是 7 的倍数,因为 nums
是将 x % 7
除以 7 的余数- 如果余数为零,则该数字是倍数。就读取表达式本身而言,x
在功能上等同于 num % 7 == 0
,
例如,(num % 7) == 0
的原始列表将为您提供结果列表 [1,5,7,9,14,22]
,因为该列表中只有 [False,False,True,False]
和 7
满足条件。
之后,如果列表中的任何元素为真,表达式 14
将返回 any(someList)
。
因此,给定的整个函数将简单地检测列表中的任何元素是否是 7 的倍数,在此代码的上下文中显然被认为是“幸运的”。
,检查操作优先级的文档 https://docs.python.org/3/reference/expressions.html#evaluation-order
您可以在表中看到 mult/div(或 % modulo)出现在比较之前(== 和