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

时间:2015-07-17 13:23:34

标签: python

所以我昨天刚刚完成了编码测试,而且我有点神经质。我被要求创建一个类或函数来检查列表中的元素是否都可以被可伸缩的元素列表整除。这是我能想到的最好的,并且想知道这是否可以改进。谢谢!为了摆脱它,我故意使用部分代替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

1 个答案:

答案 0 :(得分:3)

>>> 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测试,它是否可被所有提供的值整除。仅保留通过此测试的值。