Slice a list of lists?

Jonno jonnojohnson at gmail.com
Wed Sep 8 16:54:44 EDT 2010


On Wed, Sep 8, 2010 at 3:44 PM, Andreas Waldenburger
<usenot at geekmail.invalid> wrote:
> On Wed, 8 Sep 2010 15:23:35 -0500 Jonno <jonnojohnson at gmail.com> wrote:
>
>> On Wed, Sep 8, 2010 at 3:18 PM, Jonno <jonnojohnson at gmail.com> wrote:
>> [snip]
>> > Now if I want to select the first item in every 2nd item of list a
>> > (ie: [1,7]) can I use ::2 anywhere or do I need to create a list of
>> > indices to use in a more complex for loop?
>> >
>> Seems like the simplest way would be:
>> [row[0] for row in a][::2]
>
> What you're doing here is selecting every second item of the list of
> first items of the items in a, not the first items of every second item
> in a (head spinning yet?).
>
> If I'm not completely mindbent right now, these are logically
> equivalent, but not computationally.
>
> Compare
>    [row[0] for row in a][::2]  # (your Python code)
> with
>    [row[0] for row in a[::2]]  # (as per your description)
>
> The first one is more work for your computer, because it'll pick out
> the first elements of *all* of the items in a, whereas the second only
> picks out the first elements of every second item in a (which is only
> half the amount of "picks" compared to the former).
>
> I just thought I'd mention it. Because it might make a difference in
> one of your programs some day. And because I'm a pedant ;).

Thanks again. It is nice to know how to do things properly even though
in my case it probably won't make much difference.

Terry, I would have used numpy arrays (I actually use them later in
the code) except the lists in my list aren't all of the same length.



More information about the Python-list mailing list