我有一个 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的方法是什么?对我来说,性能不是问题,但拥有良好的性能总是好的。最好有一种解决方案用于就地排序,另一种解决方案是通过创建新列表来实现。
只需使用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)
| 归档时间: |
|
| 查看次数: |
634 次 |
| 最近记录: |