Introducing Python to others

andrew cooke andrew at acooke.org
Tue Mar 31 12:06:07 EDT 2009


David C. Ullrich wrote:
> In article <TM6dnZxRVIQ0QFbUnZ2dnUVZ_rmdnZ2d at pdx.net>,
>  Scott David Daniels <Scott.Daniels at Acm.Org> wrote:
>
>> Mensanator wrote:
>> > On Mar 26, 11:42 am, "andrew cooke" <and... at acooke.org> wrote:
>> >> ...
>> >> that's cute, but if you show them 2.6 or 3 it's even cuter:
>> >>
>> >>>>> from operator import add
>> >>>>> class Vector(list):
>> >> ...   def __add__(self, other):
>> >> ...     return map(add, self, other)
>> >> ...>>> x = Vector([1,2])
>> >>>>> x+x
>> >> [2, 4]
>> >
>> > What would you have to do to make this work?
>> >
>> >>>> x+x+x      # expecting [3,6]
>> > [2, 4, 1, 2]
>> >
>>
>>      class Vector(list):
>>          def __add__(self, other):
>>              return type(self)(x + y for x, y in zip(self, other))
>
> Question: I would have thought it would be
>
>       return type(self)([x + y for x, y in zip(self, other)])
>
> What's this thing that looks like a list comprehension but isn't?

it's a generator expression. 
http://docs.python.org/3.0/reference/expressions.html#index-3735

andrew




More information about the Python-list mailing list