[Tutor] list comprehensions
moron.oxy at gmail.com
Fri Oct 9 07:17:44 CEST 2009
On Wed, Oct 7, 2009 at 6:57 AM, Christer Edwards
<christer.edwards at gmail.com> wrote:
> do something to x for each x in list, with an optional qualifier.
To be more precise:
"Each list comprehension consists of an expression followed by a for
clause, then zero or more for or if clauses"
> On the other hand I've seen a few examples that look similar, but
> there is no action done to the first x, which confuses me. An example:
> print sum(x for x in xrange(1,1000) if x%3==0 or x%5==0)
So, it's not an 'action' as such, but an expression, x in this case is
a variable containing a number, thus stating 'x' by itself is an
expression that yields x's value and adds it to the sequence being
generated without doing anything else to it. The built-in function sum
(on the interpreter, type: help(sum)) takes a sequence of (numeric)
values and returns their... sum :-).
> In this case is sum() acting as the "action" on the first x? Can
> anyone shed some light on what it is I'm not quite grasping between
> the two?
Hence, sum does not know about x at all, just about the end result of
the generator expression: the generated sequence first evaluated, then
passed into it as an argument.
There is more to life than increasing its speed.
-- Mahatma Gandhi
More information about the Tutor