您的问题似乎暗示这个 sn-p 已经在 for 循环中,如下所示:
outer_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for index in xrange(3):
li = [row[index] for row in outer_list]
print li
会输出:
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
您可以通过在外循环内嵌套一个内循环,将其转换为仅使用传统的 for 循环:
outer_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for index in xrange(3):
li = [] # initial empty list
for row in outer_list: # our inner loop
li.append(row[index]) # Build the list "li" iteratively
print li
如果您将此嵌套列表视为矩阵,那么您所描述的实质上是对矩阵进行转置。您也可以完全通过列表推导来做到这一点:
outer_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transpose = [[row[i] for row in outer_list] for i in range(len(outer_list[0]))]
print transpose
产生:
[[1, 4, 7],
[2, 5, 8],
[3, 6, 9]]
如Python官方教程here所示。
为了完整起见,我已经包含了嵌套列表解析示例,但对明智的人说一句:使用嵌套列表解析通常会使代码更难理解,而不是更多。仅仅因为你可以并不意味着你应该。