Python 可调整的函数来分割嵌套列表?
若我有一个正方形矩阵作为python中的嵌套列表,我可以将其拆分为几个大小相等的框,并创建一个新列表,其中每个元素都是其中一个框中的数字列表。例如Python 可调整的函数来分割嵌套列表?,python,list,nested-lists,Python,List,Nested Lists,若我有一个正方形矩阵作为python中的嵌套列表,我可以将其拆分为几个大小相等的框,并创建一个新列表,其中每个元素都是其中一个框中的数字列表。例如 a = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15 ,16]] b = [[a[0][0], a[0][1], a[1][0], a[1][1]], [a[0][2], a[0][3], a[1][2], a[1][3]], [
a = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15 ,16]]
b = [[a[0][0], a[0][1], a[1][0], a[1][1]],
[a[0][2], a[0][3], a[1][2], a[1][3]],
[a[2][0], a[2][1], a[3][0], a[3][1]],
[a[2][2], a[2][3], a[3][2], a[3][3]]]
有没有更简单的方法?是否有一种方法可以将其设置为一个函数,我可以将其应用于不同大小的矩阵,并指定框的大小?以下内容与您所拥有的内容等效,并且更加简洁:
b = [a[0][:2] + a[1][:2],
a[0][2:] + a[1][2:],
a[2][:2] + a[3][:2],
a[2][2:] + a[3][2:]]
或同等的列表理解:
b = [a[i][s] + a[i+1][s] for i in (0,2) for s in (slice(None,2), slice(2,None))]
使用:
可能没关系,但我忘了提到这是在python 2.xThanks中使用的,我认为列表理解是我想要的,非常感谢:)
In [31]: import numpy as np
In [32]: a = np.arange(1,17).reshape(4,4)
In [33]: a
Out[33]:
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
In [34]: b = a.reshape(-1,2,2,2).swapaxes(1,2).reshape(4,4)
In [35]: b
Out[35]:
array([[ 1, 2, 5, 6],
[ 3, 4, 7, 8],
[ 9, 10, 13, 14],
[11, 12, 15, 16]])