Difference in formatting list and tuple values

Dr. Des Small des.small at bristol.ac.uk
Thu Dec 13 12:25:17 EST 2001

sag at hydrosphere.com (Sue Giller) writes:

> I am trying to format values from either a list or a tuple, and I am 
> getting the following odd (to me) behavior.   

Well, you're doing an odd (to me) thing...

> I can format the tuple 
> entry using %d, but I get an error when I use the same formatting 
> for the same data in a list.
> Why does this happen?

> >>> print "%02d" % l[:1]			# get error with list
> Traceback (most recent call last):
>   File "<interactive input>", line 1, in ?
> TypeError: an integer is required
> >>> print "%02d" % tuple(t[:1])		# cast to a tuple works ok
> 01
The right hand side of the % operator must be either a tuple or a
single item.  I would probably write

print "%02d" % t[0] 

to do this, since it works for both lists and tuples.  But if you're
secretly doing something fancy like 

print len(l)*"%02d " % tuple(l)

then you will need the cast.  The only weirdness here is that % doesn't
single elements to be tuplified, which is a concession to

print "%d" % (12,)

is also legal, but a little peculiar to look at.

Dr Des Small, Scientific Programmer,
School of Mathematics, University of Bristol,
Tel: 0117 9287984

More information about the Python-list mailing list