On Sun, 08 Jan 2006 14:27:55 -0500 in comp.lang.python, Gerard Brunick <[EMAIL PROTECTED]> wrote:
>My way is ugly. These has to be a better way. This may not be the "slickest" way, but I needed some practice with list comprehensions (I've never really gotten used to them...) This works with lists. Making it work with tuples should be a simple change. Also, it works for the general case of rectangular matrices rather than being limited to squares. >>> def transpose(m): """ Transpose the rectangular two-dimentional matrix m. """ return [[m[y][x] for y in range(len(m))]for x in range(len(m[0]))] >>> def pm(m): """ Print the matrix m. Just to see the results. """ for row in m: print row >>> td = [range(10) for x in range(10)] >>> pm(td) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> pm(transpose(td)) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2, 2, 2, 2, 2, 2, 2, 2, 2, 2] [3, 3, 3, 3, 3, 3, 3, 3, 3, 3] [4, 4, 4, 4, 4, 4, 4, 4, 4, 4] [5, 5, 5, 5, 5, 5, 5, 5, 5, 5] [6, 6, 6, 6, 6, 6, 6, 6, 6, 6] [7, 7, 7, 7, 7, 7, 7, 7, 7, 7] [8, 8, 8, 8, 8, 8, 8, 8, 8, 8] [9, 9, 9, 9, 9, 9, 9, 9, 9, 9] >>> td2 = [range(10) for x in range(5)] >>> pm(td2) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> pm(transpose(td2)) [0, 0, 0, 0, 0] [1, 1, 1, 1, 1] [2, 2, 2, 2, 2] [3, 3, 3, 3, 3] [4, 4, 4, 4, 4] [5, 5, 5, 5, 5] [6, 6, 6, 6, 6] [7, 7, 7, 7, 7] [8, 8, 8, 8, 8] [9, 9, 9, 9, 9] >>> Regards, -=Dave -- Change is inevitable, progress is not. -- http://mail.python.org/mailman/listinfo/python-list