比方说,我有一个数组定义为多维分层原始的Python
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
,我希望得到的垂直切片,返回[2, 5, 8]
。有没有办法在直接Python中切分语法?当我尝试查找多维切片时,我倾向于看到的唯一结果都是关于numpy的讨论,并且使用在那里讨论的语法给出了原始Python中的错误。
比方说,我有一个数组定义为多维分层原始的Python
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
,我希望得到的垂直切片,返回[2, 5, 8]
。有没有办法在直接Python中切分语法?当我尝试查找多维切片时,我倾向于看到的唯一结果都是关于numpy的讨论,并且使用在那里讨论的语法给出了原始Python中的错误。
当然。你通常可以使用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]
我知道我可以使用一个循环,但有没有办法用切片表达式来做到这一点? –
你是什么意思的“切片表达”? – Sheng
http://docs.python.org/2/tutorial/introduction.html(搜索'切片') –
我不知道的一个直接的方式来获得的垂直切片,这可能是更昂贵的比列表理解答案,但依然
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]用于外内]'? –