List transpose method
Paul Sidorsky
paulsid at home.com
Thu Nov 1 18:12:22 EST 2001
Tom Harris wrote:
> Suppose I have a list like ((1,2), (3,4), (5,6)). Can some functional guru
> tell me a one liner to transpose this to the form ((1,3,5),(2,4,6))? I can
> only come up with an ugly multiliner.
apply(zip, a) seems to work for most cases:
>>> a = ((1,2), (3,4), (5,6))
>>> apply(zip, a)
[(1, 3, 5), (2, 4, 6)]
>>> a = ((1,3,5), (2,4,6))
>>> apply(zip, a)
[(1, 2), (3, 4), (5, 6)]
>>> a = ("Hello world", "Goodbye all")
>>> apply(zip, a)
[('H', 'G'), ('e', 'o'), ('l', 'o'), ('l', 'd'), ('o', 'b'),
(' ', 'y'), ('w', 'e'), ('o', ' '), ('r', 'a'), ('l', 'l'), ('d', 'l')]
>>> a = ((1,2,3,4),(5,6,7,8),(9,10,11,12))
>>> apply(zip, a)
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
>>> a = [[1, 2, 3, 4]]
>>> apply(zip, a)
[(1,), (2,), (3,), (4,)]
>>> a = ((1, 2, 3), (4, 5))
>>> apply(zip, a)
[(1, 4), (2, 5)]
--
======================================================================
Paul Sidorsky Calgary, Canada
paulsid at home.com http://members.home.net/paulsid/
More information about the Python-list
mailing list