T
Tim Chase
No, because the builtin sum want's a list. This can also
Could you have been trying it on a version of python <2.4?
tim@oblique:~$ python2.3
Python 2.3.5 (#2, Sep 4 2005, 22:01:42)
[GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2
Type "help", "copyright", "credits" or "license" for more
information. File "<stdin>", line 1
sum(i**2 for i in xrange(100))
^
SyntaxError: invalid syntax
tim@oblique:~$ python2.4
Python 2.4.1 (#2, May 5 2005, 11:32:06)
[GCC 3.3.5 (Debian 1:3.3.5-12)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.328350
-tkc
2666666466666670000000Lhandle any kind of iterable, so this would work:
isum(i**2 for i in xrange(100))
sum would need firs the whole list to be generated:
sum([i**2 for i in xrange(100)]) Really?
sum(i**2 for i in xrange(20000000))
seems to work fine, and judging by the memory usage it
pretty obviously doesn't create an intermediate list.
Very strange. I must have made some strange error. I tried
that (more than once) and it failed. Don't know why. But now
it works here, too. What did I write, when it failed?
Could you have been trying it on a version of python <2.4?
tim@oblique:~$ python2.3
Python 2.3.5 (#2, Sep 4 2005, 22:01:42)
[GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2
Type "help", "copyright", "credits" or "license" for more
information. File "<stdin>", line 1
sum(i**2 for i in xrange(100))
^
SyntaxError: invalid syntax
tim@oblique:~$ python2.4
Python 2.4.1 (#2, May 5 2005, 11:32:06)
[GCC 3.3.5 (Debian 1:3.3.5-12)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.328350
-tkc