如何切片列表列表的第 n 列?

How to slice the nth column of a list of lists?

我想对列表列表的第 n 列进行切片。 例如

matrix = [
    ["c","b","a","c"],
    ["d","a","f","d"],
    ["g","h","i","a"]
]

我需要转置列表然后使用索引吗?例如

transposed = []
for i in range(len(matrix)+1):
   transposed.append([row[i] for row in matrix])
transposed[1]
>>> ['b','a','h']

或者有没有办法直接在嵌套列表上使用索引?

我正在尝试类似的东西:

matrix[:][1]
>>>['d','a','f','d']

但我发现这不起作用。

谢谢

>>> [column[1] for column in matrix]
['b', 'a', 'h']

你是这个意思吗?

您可以使用 zip 转置您的矩阵:

list(zip(*matrix))[1]

输出:('b', 'a', 'h')