Alan Gauld wrote: > "Kent Johnson" <[EMAIL PROTECTED]> wrote > >>> The notation data[;,0] doesn't make sense and is an error in >>> Python. >> [:,0] is an extended slice, not an error: >> http://docs.python.org/ref/slicings.html >> > > Really? I got an error from the interpreter. > >>>> d[:,0] > Traceback (most recent call last): > File "<input>", line 1, in ? > TypeError: list indices must be integers
Ok. What I meant is, it is not a *syntax* error. > Following the link I get the somewhat obscure explanation: > > """ > The semantics for an extended slicing are as follows. > The primary must evaluate to a mapping object, > """ > This bit I understand :-) > > """ > and it is indexed with a key that is constructed from the slice list, > as follows. If the slice list contains at least one comma, the key > is a tuple containing the conversion of the slice items; > """ > > This seems to be the case here, but where is the tuple? The tuple is the parameter passed to __getitem__(): In [1]: class sliced(object): ...: def __getitem__(self, item): ...: print repr(item) ...: ...: In [2]: s=sliced() In [3]: s[3] 3 In [4]: s[1:2:3] slice(1, 2, 3) In [5]: s[:,0] (slice(None, None, None), 0) > If i try testing anything I just get an error. There's the rub. Extended slicing is not supported by any built-in containers. That's why you get a TypeError when you try it with a list. > When were these introduced? I am on v2.4.3 At least since 2.0 :-) http://www.python.org/doc/2.0/ref/slicings.html > > """ > otherwise, the conversion of the lone slice item is the key. The > conversion of a slice item that is an expression is that expression. > The conversion of an ellipsis slice item is the built-in Ellipsis > object. The conversion of a proper slice is a slice object (see > section 3.2) whose start, stop and step attributes are the values of > the expressions given as lower bound, upper bound and stride, > respectively, substituting None for missing expressions. > """ > > And most of that I don't understand. It is saying what the values passed to __getitem__() are: either a plain object (probably an integer); an Ellipsis object, if the parameter is ...: In [6]: s[...] Ellipsis or a slice object, or a tuple of such things. > Can someone who does give some examples of this > and what you would use it for? > >> It is used in Numeric/numpy to select from multidimensional arrays. See the numpy docs for examples. > I don't use either, but since its part of the languyage I assiume it > can be used in normal Python lists too? No. It can be used for user-defined classes but it is not supported by any built-ins. IIUC this feature was added specifically for Numeric. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor