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