Strange behavior for a 2D list

Wim R. Cardoen wcardoen at gmail.com
Thu Apr 18 17:33:10 EDT 2013


Thank you all for your replies.
I had the matrix concept in mind such as
explained in the numpy example.

Rob



On Thu, Apr 18, 2013 at 3:19 PM, Wolfgang Maier <
wolfgang.maier at biologie.uni-freiburg.de> wrote:

> Robrecht W. Uyttenhove <ruyttenhove <at> gmail.com> writes:
>
> >
> > Hello,
> > I tried out the following
> code:y=[range(0,7),range(7,14),range(14,21),range(21,28),range(28,35)]
> > >>> y[[0, 1, 2, 3, 4, 5, 6],  [7, 8, 9, 10, 11, 12, 13],
> >       [14, 15, 16, 17, 18, 19, 20],  [21, 22, 23, 24, 25, 26, 27],  [28,
> >
>        29, 30, 31, 32, 33, 34]]
> > >>> y[1:5:2][::3]
> > [[7, 8, 9, 10, 11, 12, 13]]
> > I expected the 2D list:[[ 7, 10, 13],
> >  [21, 24, 27]]
> >
> > Any ideas?
> >
> > Thanks,
> > Rob
> > PS: I used Python 2.7.3
> >
>
> The explanation is rather simple, just break up your complex slicing into
> its parts:
> y[1:5:2] => [[7, 8, 9, 10, 11, 12, 13],[21, 22, 23, 24, 25, 26, 27]]
> and [::3] is asking for the first,4th,7th,... element from this list.
> Obviously, only the first one's existing, so [7, 8, 9, 10, 11, 12, 13]
>
> What you expected is kind of vertical slicing through the rows. I don't
> think you can achieve this with slicing alone in standard Python, but it's
> possible with numpy arrays.
> In Python you will have to combine slicing with a comprehension, like this:
> [x[::3] for x in y[1:5:2]]
>
> Best,
> Wolfgang
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
---------------------------------------------------------------
Wim R. Cardoen, PhD
Staff Scientist,
Center for High Performance Computing
University of Utah
(801)971-4184

*μὴ μου τοὺς κύκλους τάραττε! (Ἀρχιμήδης)*
---------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20130418/ff18c575/attachment.html>


More information about the Python-list mailing list