a few extensions for the itertools
Tim Chase
python.list at tim.thechases.com
Mon Nov 20 11:32:41 EST 2006
>>> No, because the builtin sum want's a list. This can also
>>> handle 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))
>> 2666666466666670000000L
>>
>> 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 at 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.
>>> sum(i**2 for i in xrange(100))
File "<stdin>", line 1
sum(i**2 for i in xrange(100))
^
SyntaxError: invalid syntax
tim at 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.
>>> sum(i**2 for i in xrange(100))
328350
-tkc
More information about the Python-list
mailing list