你的问题似乎暗示着这段代码已经在一个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 = []
for row in outer_list:
li.append(row[index])
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教程这里所示。
我包含了嵌套列表推导式的例子,以保证完整性,但是有个忠告:通常使用嵌套列表推导式会使代码更难理解,而不是更容易。仅仅因为你可以这样做,并不意味着你应该这样做。