我可以在for循环中使用某些条件的打印元素吗? 实际上我有这段代码:
sum = 0
for i in range(1,1000):
if i%3 == 0 or i%5 == 0 :
sum+=i
print(sum)
我想在一行代码中转换它。 任何帮助将不胜感激。
答案 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
>>>