是否可以在Python中的print语句中使用for循环

时间:2014-02-03 15:29:09

标签: python loops

我可以在for循环中使用某些条件的打印元素吗? 实际上我有这段代码:

sum = 0
for i in range(1,1000):
    if i%3 == 0 or i%5 == 0 :
        sum+=i
print(sum)  

我想在一行代码中转换它。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:6)

您可以使用generator expression

print(sum(i for i in range(1,1000) if i%3 == 0 or i%5 == 0))

请注意,我在这里使用了内置函数sum(),这与变量sum不同(通常你不应该使用它作为名称,因为它会影响内置函数在功能)。

答案 1 :(得分:0)

使用reduce和lambda:

>>> reduce( lambda x,y: x +y, [i for i in range(1000) if i % 3 == 0 or i % 5 == 0 ])
233168 
>>>

或者如果你想要变量条件:

>>> def sum_it(Range, Divisible_by):
...    return sum([[0, i][any([i % n == 0 for n in Divisible_by])] for i in range(Range)])
...
>>> sum_it(1000, [3,5])
233168
>>> sum_it(1000, [3,6])
166833
>>>