[Python-Dev] printing xrange objects

Thomas Wouters thomas@xs4all.net
Thu, 3 Aug 2000 17:30:23 +0200


On Thu, Aug 03, 2000 at 11:14:57AM -0400, Fred L. Drake, Jr. wrote:

> Thomas Wouters writes:
>  > >>> x = xrange(1000)
>  > >>> repr(x)
>  > (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
>  > ... ... ... 
>  > ... 998, 999)
>  > 
>  > >>> str(x)
>  > '(xrange(0, 1000, 1) * 1)'

>   What version is this with?  1.5.2 gives me:
> 
> Python 1.5.2 (#1, May  9 2000, 15:05:56)  [GCC 2.95.3 19991030 (prerelease)] on linux-i386
> Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
> >>> x = xrange(2)
> >>> str(x)
> '(xrange(0, 2, 1) * 1)'
> >>> repr(x)
> '(xrange(0, 2, 1) * 1)'
> >>> x
> (0, 1)

Sorry, my bad. I just did 'x', and assumed it called repr(). I guess my
newbiehood shows in that I thought 'print x' always called 'str(x)'. Like I
replied to Tim this morning, after he caught me in the same kind of
ebmarrasing thinko:

Sigh, that's what I get for getting up when my GF had to and being at the
office at 8am. Don't mind my postings today, they're likely 99% brainfart.

Seeing as how 'print "range: %s"%x' did already use the 'str' and 'repr'
output, I see no reason not to make 'print x' do the same. So +1.

> >>> x
> xrange(0, 2, 1)
> 
>   (Where the outer (... * n) is added only when n != 1, 'cause I think
> that's just ugly.)

Why not remove the first and last argument, if they are respectively 0 and 1?

>>> xrange(100)
xrange(100)
>>> xrange(10,100)
xrange(10, 100)

-- 
Thomas Wouters <thomas@xs4all.net>

Hi! I'm a .signature virus! copy me into your .signature file to help me spread!