如何在单行'for'循环中减少以下代码

时间:2014-10-29 06:54:44

标签: python for-loop

我有以下代码。

for i in range(1,number):
    if (number%i) == 0:
        divisorSum += i   

如何在python

中只在一行中减少此代码

2 个答案:

答案 0 :(得分:6)

这是一种方式:

divisorSum += sum(i for i in range(1, number) if number % i == 0)

这是否比原作更可读或更少,是在旁观者的眼中。

我使用+=来保持代码与您的代码完全相同。如果您在循环之前将divisorSum初始化为零,则可以将+=替换为=并删除初始化。

最后,值得注意的是,您的代码只会计算proper divisors。如果您确实需要包含号码,请使用range(1, number + 1)

答案 1 :(得分:1)

您可以尝试使用过滤器:

sum( filter(lambda i: not number % i, range(1,7)) )

请注意,在Python中,0False。因此not 0Truenot number % i检查您的规定条件。 sum执行迭代执行的添加操作。