繁体   English   中英

检查列表中的数字是否可被另一个数字整除的最有效方法

[英]Most efficient way to check if numbers in a list is divisible by another number

所以我昨天刚刚完成编码测试,我有点神经质。 我被要求创建一个类或函数来检查列表中的元素是否可以被可伸缩的元素列表整除。 这是我能想到的最好的方法,并且想知道是否可以改进。 谢谢! 为了掌握它,我特意使用了局部变量而不是lambda。 对我来说,它更干净,并且可以更好地重用代码。 另外,我认为Guido强烈建议不要使用Lambda,并建议人们改用偏爱的血液。

from functools import partial

def is_divisible(mod_vals, num):
    """A partial that runs a number against the list of modulus arguments, returning a bool value"""
    for mod in mod_vals:
        if num%mod != 0:
            return False
    return True

def divisible_by_factor(*mod_vals):
    """Returns a list based off a scalable amount of modulus arguments, no range support currently"""
    comparison_list = []
    div_partial = partial(is_divisible, (mod_vals))
    for i in range(1, 100):
        if div_partial(num=i):
            comparison_list.append(i)
    return comparison_list
>>> def divisible_by_factor(mod_vals):
>>>     return [i for i in range(1, 100) if all(i % j == 0 for j in mod_vals)]
>>> print divisible_by_factor([2, 3, 5])
[30, 60, 90]

对于每个i测试它是否可以被所有提供的值整除。 仅保留通过此测试的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM