尝试对尺寸为(3 X 3)=的2D列表进行切片,结果将得到(2 X 2)的4个子列表[没有numpy和其他可能的库]
lis = [[1,1,1],[2,2,2],[3,3,3]]
print(lis)
dex = list([])
for i in range(0,2):
for j in range(0,2):
dex.append( [ lis[i:i+2,j:j+2] ] )
# print( lis[i:i+2,j:j+2] )
期望:
[ [[1,1][2,2]], [[1,1][2,2]], [[2,2][3,3]], [[2,2][3,3]] ]
获取:TypeError:列表索引必须是整数或切片,而不是元组
只需使用列表理解即可获得相同的效果。对于3D列表,您将有另一个理解。
而不是[lis[i:i+2,j:j+2]]
使用[x[j:j+2] for x in lis[i:i+2]]
其输出为[[[1, 1], [2, 2]], [[1, 1], [2, 2]], [[2, 2], [3, 3]], [[2, 2], [3, 3]]]