重组/重新排列列表

jon*_*e83 -1 python list

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

data = [[1, 2, 3], [10, 20, 30]]
Run Code Online (Sandbox Code Playgroud)

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

data_new = [[1, 10], [2, 20], [3, 30]]
Run Code Online (Sandbox Code Playgroud)

我设法通过使用两个 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
Run Code Online (Sandbox Code Playgroud)

最简单/最Pythonic的方法是什么?对我来说,性能不是问题,但拥有良好的性能总是好的。最好有一种解决方案用于就地排序,另一种解决方案是通过创建新列表来实现。

Bre*_*arn 5

只需使用zip

>>> zip(*data)
[(1, 10), (2, 20), (3, 30)]
Run Code Online (Sandbox Code Playgroud)

如果您确实需要结果是列表的列表(而不是元组的列表),您可以这样做:

>>> [list(x) for x in zip(*data)]
[[1, 10], [2, 20], [3, 30]]
Run Code Online (Sandbox Code Playgroud)

  • `地图(列表,zip(*数据))` (2认同)