重组/重新排列列表

时间:2014-09-16 06:53:40

标签: python list

我在Python中有一个列表,如下所示:

data = [[1, 2, 3], [10, 20, 30]]

现在我需要重新构建列表,使其看起来像这样:

data_new = [[1, 10], [2, 20], [3, 30]]

我设法通过使用两个for循环来解决问题:

data = [[1, 2, 3], [10, 20, 30]]

len_data = len(data)
len_dat = len(data[0])
data_new = []

for index_dat in xrange(len_dat):
    dat = []
    for index_data in xrange(len_data):
        dat.append(data[index_data][index_dat])
    data_new.append(dat)

print data_new

最简单/最pythonic的做法是什么?在我的情况下,性能不是问题,但拥有良好的性能总是很好。最好有一个解决方案进行排序,另一个是通过制作一个新列表。

1 个答案:

答案 0 :(得分:4)

只需使用zip

>>> zip(*data)
[(1, 10), (2, 20), (3, 30)]

如果你真的需要将结果作为列表列表(而不是元组列表),你可以这样做:

>>> [list(x) for x in zip(*data)]
[[1, 10], [2, 20], [3, 30]]