Help With Python

Nick Craig-Wood nick at craig-wood.com
Thu Jan 27 10:30:01 EST 2005


Steven Bethard <steven.bethard at gmail.com> wrote:
>  Nick Vargish wrote:
> > # this is one viking making one order repeated 511 times. if you want
> > # 511 vikings making seperate orders, you'll have to write a loop.
> 
>  No need to write a loop:
> 
>  py> class Viking(object):
>  ...     def order(self):
>  ...         return 'Spam'
>  ...
>  py> v = Viking()
>  py> orders = [v.order()] * 7
>  py> ', '.join(orders)
>  'Spam, Spam, Spam, Spam, Spam, Spam, Spam'
>  py> orders = [Viking().order()] * 7
>  py> ', '.join(orders)
>  'Spam, Spam, Spam, Spam, Spam, Spam, Spam'

Thats still one Viking making 7 orders surely?

Eg

>>> vikings = [Viking()] * 7
>>> vikings[0] is vikings[1]
True

whereas

>>> vikings = [Viking() for _ in range(7)]
>>> vikings[0] is vikings[1]
False

So you want this...

>>> orders = [ Viking().order() for _ in range(7) ]

-- 
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick



More information about the Python-list mailing list