实现二维矩阵90度右旋转的嵌套for循环是否有更优写法?
二维矩阵向右旋转90度实现说明
你当前编写的for循环代码已经可以正确实现二维矩阵向右旋转90度的效果,完全匹配你给出的示例要求。
效果验证
拿你给出的示例矩阵测试代码:
rotated = [] # 你给出的示例原矩阵 matrix=[[2,3,4,5],[7,6,8,9]] for i in range(len(matrix[0])): rotated.append([]) for j in range(len(matrix) - 1, -1, -1): rotated[i].append(matrix[j][i]) print(rotated)
运行输出结果为 [[7, 2], [6, 3], [8, 4], [9, 5]],和你贴的旋转后效果完全一致。
实现逻辑说明
- 外层循环遍历原矩阵的每一列:原矩阵的列数 = 旋转后矩阵的行数
- 内层循环倒序遍历原矩阵的每一行:将原矩阵对应列的元素从下到上依次取出,作为旋转后矩阵对应行的元素
精简写法参考
你也可以用列表推导式实现同样的效果,代码更简洁:
matrix=[[1,2,3],[4,5,6]] rotated = [[matrix[j][i] for j in range(len(matrix)-1, -1, -1)] for i in range(len(matrix[0]))] print(rotated)
注意事项
运行前请确保你输入的原矩阵是规则二维矩阵,也就是每一行的元素长度都相等,否则会出现索引异常。
内容的提问来源于stack exchange,提问作者FrozenIce1451
相关产品推荐
相关产品推荐

