> Variant of Paul's example: > > a = ((1,2), (3, 4), (5, 6), (7, 8), (9, 10)) > zip(*a) > > or > > [list(t) for t in zip(*a)] if you need lists instead of tuples.
[Peter Hansen] > (I believe this is something Guido considers an "abuse of *args", but I > just consider it an elegant use of zip() considering how the language > defines *args. YMMV] It is somewhat elegant in terms of expressiveness; however, it is also a bit disconcerting in light of the underlying implementation. All of the tuples are loaded one-by-one onto the argument stack. For a few elements, this is no big deal. For large datasets, it is a less than ideal way of transposing data. Guido's reaction makes sense when you consider that most programmers would cringe at a function definition with thousands of parameters. There is a sense that this doesn't scale-up very well (with each Python implementation having its own limits on how far you can push this idiom). Raymond -- http://mail.python.org/mailman/listinfo/python-list