[Tutor] Please critique my temperature_conversion.py (original) (raw)
Magnus Lyckå magnus at thinkware.se
Mon Jul 12 12:12:47 CEST 2004
- Previous message: [Tutor] Please critique my temperature_conversion.py
- Next message: [Tutor] Re: Please critique my temperature_conversion.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
At 19:40 2004-07-11 -0400, Bill Mill wrote:
note that if you leave a number out of a string slicing operation, it is assumed to be zero.
Not quite. A left out value is equvalent with None. See below:
l = list("abcdefgh") l ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] l[:2] ['a', 'b'] l[0:2] ['a', 'b'] l[None:2]
So far it's all the same...but not for the other places in the slice.
['a', 'b']
l[2:] ['c', 'd', 'e', 'f', 'g', 'h'] l[2:0] [] l[2:None] ['c', 'd', 'e', 'f', 'g', 'h']
l[:2:] ['a', 'b'] l[:2:0]
Traceback (most recent call last): File "<pyshell#8>", line 1, in -toplevel- l[:2:0] ValueError: slice step cannot be zero
l[:2:None] ['a', 'b']
As you see, 0 and None differ for the second and third number in the slice.
The third digit in the slice is for stepping:
l[2:None:2] ['c', 'e', 'g'] l[2::2] ['c', 'e', 'g']
So, if you don't hardcode you slice values, but use something like "l[start:stop:step]" you need to use "None", not "0", for default values. You could use... import sys start,stop,step=0,sys.maxint,1 ...as default values instead of None, but I think None is simpler...
-- Magnus Lycka (It's really Lyckå), magnus at thinkware.se Thinkware AB, Sweden, www.thinkware.se I code Python ~ The Agile Programming Language
- Previous message: [Tutor] Please critique my temperature_conversion.py
- Next message: [Tutor] Re: Please critique my temperature_conversion.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]