假设我有一个定义为
的数组[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
我希望得到一个垂直切片,返回[2, 5, 8]
。有没有办法在直接Python中切片语法?当我尝试查找多维切片时,我倾向于看到的唯一结果都是讨论numpy,并且使用所讨论的语法会在原始Python中产生错误。
答案 0 :(得分:2)
我不知道获得垂直切片的直接方法,这可能比列表理解答案更昂贵,但仍然
z = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
list(zip(*z)[1])
[2, 5, 8]
或者这可能稍贵一点
from itertools import izip, islice
list(*islice(izip(*z), 1, 2))
[2, 5, 8]
答案 1 :(得分:1)
不确定。你通常可以使用for循环。或者只是你可以编码:
>>> test = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
>>> [row[1] for row in test]
[2, 5, 8]
这段代码将生成垂直切片的新列表。如果您确实需要切片操作,则以下代码将非常有用:
>>> [item for sublist in test for item in sublist][1::len(test[0])]
[2, 5, 8]