在python中是否有任何简短的方法来打印更大矩阵的子矩阵,这样不使用for循环?
matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
sub1 = matrix[1:2][1:2]
>>>desired answer: [[6,7][10,11]]
1 2 3 4
5 *6 7* 8
9 *10 11* 12
13 14 15 16
sub2 = matrix[2][1:3]
>>>desired answer: [[7,11,15]]
1 2 3 4
5 6 *7* 8
9 10 *11* 12
13 14 *15* 16
额外:对于后一个例子,如何以反向格式返回它而不使用reverse()?即:[15,11,7]
或[16,15,14]
,
答案 0 :(得分:2)
对于列表列表,您可以获得所需的结果:
>>> [s[1:3] for s in matrix[1:3]]
[[6, 7], [10, 11]]
>>>
>>> [s[2:3] for s in matrix[1:4]]
[[7], [11], [15]]
>>>
请注意,后者是一个垂直切片,因此每个元素都包含在自己的列表中。另请注意,这是Python索引,因此范围说明符中的第二个限制比切片中的最后一个索引高一个。