3 ms·
You're better off making that a generator: sum((x for x in xrange(1, 101) if x % 3 == 0 and x % 5 == 0)) Notice the parenthesis instead of square brackets. Yo
by jgeralnik 14y ago
You're better off making that a generator:
sum((x for x in xrange(1, 101) if x % 3 == 0 and x % 5 == 0))
Notice the parenthesis instead of square brackets. Your version actually creates a list in memory. A generator generates the items one by one and doesn't need to store them all at the same time.
- dbaupp 14y agoYou can just write it as sum(x for x in xrange(1,101) if x % 3 == 0 and x % 5 == 0) and skip the inner set of parenthesis; the parenthesis on a generator expression are not needed if it is the only argument to a function.
- darkestkhan 14y agoCan't you all think for a bit? All of These solutions are O (n) in both time and space... there is solution that will take O (1) time and space - and I think that you learned it in math class at (latest) high school (hint: arithmetic progression)
- dbaupp 14y agoSeriously? The discussion is about language features, not optimal algorithms. One could imagine the question was actually "sum BusyBeaver(n) for n divisible by 3 and 5 between 1 and 100", i.e. no closed form. In Python: sum(BusyBeaver(x) for x in xrange(1,101) if x % 3 == 0 and x % 5 == 0) (And yes, if one was being really pedantic, one could replace the condition with x % 15 == 0.)
- darkestkhan 14y agoThe thing is that people start using those libraries w/o thinking before - and theirs' solutions end up doing much more work than is needed
- delinka 14y agoThis could be said of most anything high level.
- deleted 14y ago[deleted]
- the_cat_kittles 14y agotrue, but xrange(1,101) is so tiny, who cares!