Multi-dimension list
Steve Holden
steve at holdenweb.com
Wed Dec 24 07:59:17 EST 2008
James Stroud wrote:
> Steven Woody wrote:
>> Hi,
>>
>> In the book Python Essential Reference, Chapter 3, when talking about
>> extended slicing, it gives an example: a = m[0:10, 3:20]. But I
>> don't understand how the 'm' was defined. What should it looks like?
>
> m could be an instance of the Krayzee class.
>
> py> class Krayzee(object):
> ... def __getitem__(self, i):
> ... try:
> ... r = ['WTF?' for j in i]
> ... except:
> ... r = 'WTF?'
> ... return r
> ...
> py> m = Krayzee()
> py> m[1:2:3, 4:5:6]
> ['WTF?', 'WTF?']
> py> m['your moms']
> ['WTF?', 'WTF?', 'WTF?', 'WTF?', 'WTF?', 'WTF?', 'WTF?', 'WTF?', 'WTF?']
>
>
I'm not sure what this is supposed to prove. It might be more helpful to
show what's actually going on ...
>>> class k(object):
... def __getitem__(self, i):
... try:
... r = [j for j in i]
... except Exception, e:
... print i, ":", e
... r = i
... return r
...
>>> m = k()
>>> m[1:2:3, 4:5:6]
[slice(1, 2, 3), slice(4, 5, 6)]
>>> m["help!"]
['h', 'e', 'l', 'p', '!']
>>>
As you can see, no exceptions are raised here, and the x:y:z notation
introduces a slice object, which the code doesn't handle in any way
shape or form.
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/
More information about the Python-list
mailing list