zip() or what?

Discussion in 'Python' started by Ray Tomes, Jul 3, 2003.

  1. Ray Tomes

    Ray Tomes Guest

    Hi all

    Many thanks to those that answered my questions about whitespace and ord()
    being reverse of chr(). As well as the 2 things I asked about I learned
    about 5 other useful things.

    This I am trying to flip an array around so that the "subscripts" happen
    in the opposite order and reading the docs I thought that zip() did this.
    So I tried it like this:

    x=[[0.1,0.2],[1.1,1.2],[2.1,2.2]]
    print zip(x)

    and what I got was (removing the .0000000001s):

    [([0.1, 0.2],), ([1.1, 1.2],), ([2.1, 2.2],)]

    which is just my original array with an extra useless level in it.
    What I really wanted was this:

    [[0.1,1.1,2.1],[0.2,1.2,2.2]]

    So my question is how do I do that easily?
    And what on earth is zip() doing?

    Alternatively, is there a construct to get x[*] if you know what I mean?

    Have fun

    Ray
    Ray Tomes, Jul 3, 2003
    #1
    1. Advertising

  2. Ray Tomes wrote:

    > What I really wanted was this:
    >
    > [[0.1,1.1,2.1],[0.2,1.2,2.2]]
    >
    > So my question is how do I do that easily?


    You wanted

    zip(*x)

    > Alternatively, is there a construct to get x[*] if you know what I
    > mean?


    Probably

    [i[1] for i in x]

    or

    map(lambda i: i[1], x)

    --
    Erik Max Francis && && http://www.alcyone.com/max/
    __ San Jose, CA, USA && 37 20 N 121 53 W && &tSftDotIotE
    / \ What would physics look like without gravitation?
    \__/ Albert Einstein
    Erik Max Francis, Jul 3, 2003
    #2
    1. Advertising

  3. Ray Tomes

    Ray Tomes Guest

    Erik Max Francis wrote:
    > Ray Tomes wrote:
    >>request to flip array ...


    > zip(*x)


    >>Alternatively, is there a construct to get x[*] if you know what I
    >>mean?


    > [i[1] for i in x]


    Thanks Erik, these do just what I want.
    I can understand the 2nd one, but I don't get the meaning of the * in the
    first. Is this like the opposite of putting [] around something or what?
    Under what circumstances can an * be used like this, and what is it
    called? - I don't know how to look for it in the docs :)

    also, ...

    wrote:
    > Ray Tomes wrote:
    >>This I am trying to flip an array around so that the "subscripts" happen
    >>in the opposite order


    > [x[-i-1] for i in range(len(x))]


    Thanks Al, but that was not the flip I was looking for sorry - I hadn't
    realised it could be taken another way. I wanted to swap the subscripts
    with each other (a 45 degree reflection) not within one subscript end to
    end (a 90 degree reflection). Erik has done the one I wanted.
    Ray Tomes, Jul 3, 2003
    #3
  4. Ray Tomes wrote:

    > I can understand the 2nd one, but I don't get the meaning of the * in
    > the
    > first. Is this like the opposite of putting [] around something or
    > what?
    > Under what circumstances can an * be used like this, and what is it
    > called? - I don't know how to look for it in the docs :)


    f(x) calls the function f with the single argument x. f(*x) calls f
    with the arguments x, which is expected to be a sequence. The * syntax
    comes from defining functions, where a formal argument preceded by *
    means, "All the rest of the arguments as a tuple." So:

    >>> def f(*x): print x

    ....
    >>> s = [1, 2, 3]
    >>> f(s)

    ([1, 2, 3],)
    >>> f(*s)

    (1, 2, 3)

    The old way of writing the function call f(*x) was apply(f, x).

    --
    Erik Max Francis && && http://www.alcyone.com/max/
    __ San Jose, CA, USA && 37 20 N 121 53 W && &tSftDotIotE
    / \ War is like love, it always finds a way.
    \__/ Bertolt Brecht
    Erik Max Francis, Jul 3, 2003
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Alex Hunsley
    Replies:
    1
    Views:
    596
    Andrew Thompson
    Sep 16, 2004
  2. Replies:
    0
    Views:
    1,717
  3. HARI OM
    Replies:
    0
    Views:
    17,408
    HARI OM
    May 3, 2005
  4. sunil_varma
    Replies:
    1
    Views:
    1,170
  5. Dave Kuhlman

    ANN: zip-ls -- Zip file listing program

    Dave Kuhlman, Jul 19, 2003, in forum: Python
    Replies:
    0
    Views:
    402
    Dave Kuhlman
    Jul 19, 2003
Loading...

Share This Page