我在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的做法是什么?在我的情况下,性能不是问题,但拥有良好的性能总是很好。最好有一个解决方案进行排序,另一个是通过制作一个新列表。
答案 0 :(得分:4)
只需使用zip
:
>>> zip(*data)
[(1, 10), (2, 20), (3, 30)]
如果你真的需要将结果作为列表列表(而不是元组列表),你可以这样做:
>>> [list(x) for x in zip(*data)]
[[1, 10], [2, 20], [3, 30]]