如何验证判断列表所有元素是否为k的倍数的代码有效性?
核心实现思路
判断列表内所有数字是否为k的倍数的核心逻辑为:对每个数字做k的取模运算,若结果为0则该数字符合要求,所有元素均符合要求时返回True,否则返回False。
参考实现示例
Python 内置函数简洁版
def all_multiples_of_k(num_list: list[int], k: int) -> bool: # 边界处理:k不能为0,否则取模会触发除零错误 if k == 0: raise ValueError("参数k不能为0") # 空列表返回值可根据业务需求调整,此处默认返回True if not num_list: return True return all(num % k == 0 for num in num_list)
手动遍历逻辑版(适合理解底层执行逻辑)
def all_multiples_of_k(num_list: list[int], k: int) -> bool: if k == 0: raise ValueError("参数k不能为0") for num in num_list: if num % k != 0: # 遇到第一个不符合要求的元素直接返回,不需要遍历完整列表,性能更优 return False return True
常见错误排查点
- 遗漏k=0的边界处理,运行时直接触发除零报错
- 取模逻辑写反,写成
k % num == 0,实际变成判断k是所有列表元素的倍数,和需求相反 - 未做提前终止逻辑,遍历完所有元素才返回结果,大列表场景下性能损耗严重
- 若需求要求必须是正倍数,可额外增加
num > 0的判断条件,Python默认取模支持负数运算,-4 % 2 == 0会返回True
测试用例参考
# 所有元素都是2的倍数 print(all_multiples_of_k([2,4,6,8], 2)) # 输出 True # 存在非倍数元素 print(all_multiples_of_k([2,5,6], 2)) # 输出 False # 空列表场景 print(all_multiples_of_k([], 3)) # 输出 True # 负数适配场景 print(all_multiples_of_k([-2,4,-6], 2)) # 输出 True
内容的提问来源于stack exchange,提问作者Broski
相关产品推荐
相关产品推荐

