非对称维度数组90度旋转问题:无法在2x3与3x2间往返转换
解决非对称维度像素块旋转往返问题
- 原代码的核心问题:
zip(*self.array[::-1])返回的是元组迭代器,未转换为列表结构可能导致后续维度处理异常;且若要在m×n和n×m维度间往返,需区分顺时针旋转和逆时针旋转操作,而非重复使用同一段代码。
顺时针旋转90度(m×n → n×m)
将数组反转后转置,同时把结果转换为列表的列表:
def rotate_clockwise(self): self.array = [list(row) for row in zip(*self.array[::-1])]
逆时针旋转90度(n×m → m×n)
将数组转置后反转,同样转换为列表的列表:
def rotate_counterclockwise(self): self.array = [list(row) for row in zip(*self.array)][::-1]
示例验证
初始2x3数组:
self.array = [[1, 2, 3], [4, 5, 6]]
- 顺时针旋转后(3x2):
[[4, 1], [5, 2], [6, 3]] - 再逆时针旋转,恢复为原2x3数组:
[[1, 2, 3], [4, 5, 6]]
如果需要旋转四次回到原状态,即使是非对称维度,交替使用顺时针/逆时针旋转,或者每次旋转后记录当前维度,按需选择旋转方向即可。
内容的提问来源于stack exchange,提问作者pezubi
相关产品推荐
相关产品推荐

