如何从大二维列表中获取子二维列表?
你怎么从一个更大的二维列表中获取一个二维子列表呢?
gridx = 10
gridy = 16
grid = [[0]*gridx for i in range(gridy)]
subgrid = None
# I want to get a subgrid given an x,y grid origin (bottom-left) and x,y subgrid size
2 个回答
1
我猜你把你的网格存储在一个列表的列表里,对吧?也就是说:
primary list: [ * * * * * * ]
second item: * * * * * *
如果是这样的话,你的解决办法就是从起点出发,沿着这些列表走到终点。
sublist = []
for x in range(startx, endx):
sublist.append(oldlist[x][starty:endy])
7
如果你想在二维列表的边界 x1, y1, x2, y2 进行切片,你可以这样做:
def getsubgrid(x1, y1, x2, y2, grid):
return [item[x1:x2] for item in grid[y1:y2]]
比如说:
grid = [[1, 2, 3, 4, 5, 6, 7, 8, 9],
[11,12,13,14,15,16,17,18,19],
[21,22,23,24,25,26,27,28,29],
[31,32,33,34,35,36,37,38,39],
[41,42,43,44,45,46,47,48,49],
[51,52,53,54,55,56,57,58,59]]
print getsubgrid(3,2,5,4,grid)
#prints [[24, 25], [34, 35]]