做最好的自己520 发表于 2022-1-6 22:35:37

py课后作业25,顺时针旋转矩阵中的所有元素

各位鱼油大家晚上好{:10_332:}

        做了一下25课的顺时针旋转矩阵中所有元素,然后想转换一下搞个按照逆时针旋转,然而转来转去被搞懵逼了{:10_255:}
        不过还做出来了嘻嘻。

请各位帮忙看一下做对没有?思路是否正确?有没有简且好的方案?
顺便也做一下笔记{:10_278:}


matrix = [,
          ,
          ]

##########解析##########
#初始化矩阵的四个方向:顶部(top), 底部(low):表示行的长度 , 左边(left) , 右边(right):表示列的长度
#因为是逆时针旋转所以:-->-->-->-->-->
#有共同面就只需重复执行那一行即可

#<1>,从上到下遍历:(top,low+1) ----> (low,left)
#<2>,从左到右遍历:(left+1,low) ---> (low,right+1) **********
#<3>,从下到上遍历:(low-1,right) ---> (top-1,right) *********
#<4>,从有到左遍历:(top,right-1) ---> (left,top)

#经过一轮的遍历,那么相当于走了外层一圈,也就是 left+1、right-1、top+1、low-1
###每前进一层 left 就加 1,right 就减 1,top 和 low 也是一样,那么无论这个二维列表有多大,都会遇到一个矛盾点,那就是 left 终究会大于 right,top 终究会大于 low这个就是结束的条件啦!


#与矩阵数据关联
#获取矩阵 行 的长度赋值给x
#获取矩阵 列 的长度赋值给y
x = len(matrix)
y = len(matrix)

left = 0#左面
right = y - 1#右面, 表示列
top = 0   #顶部
low = x - 1   #底部, 表示行

record = []#存储数据

while left <= right and top <= low:
    #从下到上遍历
    for col in range(top,low+1):
      record.append(matrix)

    #从左到右遍历
    for row in range(left+1,right+1):
      record.append(matrix)

    if left < right and top < low:
      #从下到上遍历
      for col in range(low-1 ,top-1,-1):
            record.append(matrix)

      #从右到左遍历
      for row in range(right-1,left,-1):
            record.append(matrix)

#最后一行元素 判断是否退出程序
    left += 1
    right -= 1
   
    top += 1
    low -= 1

print(record)

大马强 发表于 2022-1-7 08:20:43

我觉得挺好的了。没看到啥多余的地方{:10_281:}

傻眼貓咪 发表于 2022-1-7 10:53:21

我觉得很好,我的思路也一样,边界一直往内缩小就是题解

kogawananari 发表于 2022-1-7 11:14:42

对于n维矩阵的平移缩放和旋转只需要升维到n+1维 运算量能略微减小而且更适合显卡运算

https://blog.csdn.net/qq_23030843/article/details/81064881

bloodbat007 发表于 2022-1-7 12:10:38

b=[ for row in matrix] for i in range(-1,-5,-1)]

做最好的自己520 发表于 2022-1-7 16:07:46

kogawananari 发表于 2022-1-7 11:14
对于n维矩阵的平移缩放和旋转只需要升维到n+1维 运算量能略微减小而且更适合显卡运算

https://blog.csdn ...

原来如此,但是等等.......这个链接的内容也太硬了吧,暂时啃不动{:10_263:}
不过还是涨知识了{:10_330:}

做最好的自己520 发表于 2022-1-7 16:09:02

傻眼貓咪 发表于 2022-1-7 10:53
我觉得很好,我的思路也一样,边界一直往内缩小就是题解

好的,谢谢{:10_288:}
页: [1]
查看完整版本: py课后作业25,顺时针旋转矩阵中的所有元素