How to do [1]*4 for a tuple

Stephen Horne steve at ninereeds.fsnet.co.uk
Tue Apr 6 10:45:33 EDT 2004


On Mon, 5 Apr 2004 21:05:34 -0400, "Vineet Jain" <vineet at eswap.com>
wrote:

>I'm not sure I understand why [1]*4 and (1)*4 work differently? [1]*4
>results in [1, 1, 1, 1] while (1)*4 results in 4. There are times when I
>have to do the following:
>
>'%s some value %s and some other text %s' % (a)*3
>
>as apposed to
>
>'%s some value %s and some other text %s' % (a, a, a)
>
>In this case I always end up doing
>
>'%s some value %s and some other text %s' % [a]*3

You have the answer to your question already, but you may be better
off using a dictionary with the % operator to get named association...

>>> a={'a':'aaa'}
>>> print '%(a)s some value %(a)s and some other text %(a)s' % a
aaa some value aaa and some other text aaa

This works particularly well when not all substituted strings are the
same, and when you may want to change format strings in such a way
that the substitutions may not be in the same order, or may not all be
used, etc. In other words, it can be very useful when the format
strings are supplied externally.

It can be handy when the support guys want to decide the wording of
error messages (and change their minds every other day) for instance.


-- 
Steve Horne

steve at ninereeds dot fsnet dot co dot uk



More information about the Python-list mailing list