这就是我想干净利落的事情。我有以下列表清单
lst1 = [[1,2,3],[4,5,6],[7,8,9]]
现在我要生成以下列表
lst2 = [[1,4,7],[2,5,8],[3,6,9]]
现在我知道我可以接近lst2如下
lst2 = zip[lst1[0],lst1[1],lst1[2]]
lst2 = [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
然后使用for循环生成我的新列表列表。
当原始列表的大小未知时,是否有生成新列表的方法。
lst1 = [[0],[1], ... [n]]
lst2 = [[0],[2], ... [n]]
我花了太多时间研究并试图弄清楚这个问题。这个过程实际上并不需要,因为我只使用3个列表的列表。 (Exp.lst1)。我的好奇心让我变得更好。希望有人有解决方案,因为此时我已经碰到了一堵砖墙。
答案 0 :(得分:1)
您只需要:
lst1 = [[1,2,3],[4,5,6],[7,8,9]]
print zip(*lst1)
,并提供:
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
通过添加*
,它告诉Python将列表解压缩为函数的单独参数。请参阅Unpacking Argument Lists。
答案 1 :(得分:1)
如果你想要一个列表列表(而不是一个元组列表),那么你可以使用内置zip()的列表理解:
>>> l = [[1,2,3],[4,5,6],[7,8,9]]
>>> [list(x) for x in zip(*l)]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]