| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
起因是本人学Python学到列表的最后一个章节,在论坛作业当中看到了这样一道题: 
原题 
 
 
 
由于小甲鱼这课的主题仍旧是关于列表推导式的,于是本人就绞尽脑汁地想要使用一个列表推导式完成这一功能,代码如下: 
 
- # 用户输入所需要生成矩阵的行数和列数,行和列需要同时大于0 #
 
 - row = int(input("请输入需要生成的矩阵的行数:"))
 
 - col = int(input("请输入需要生成的矩阵的列数:"))
 
  
- #自动生成一矩阵,这里矩阵里元素的内容不重要
 
 - matrix = [[(i + 1 + j * col) for i in range(col)] for j in range(row)]
 
 - print(matrix)
 
  
- #先将矩阵按行打印出来,方便观察
 
 - for i in range(row):
 
 -     print(matrix[i])
 
  
- #生成矩阵matrix的顺时针打印矩阵
 
 - clockwise_matrix = [
 
 -                     matrix[
 
 -                                (i // 4) * (1 // (i % 4 + 1))
 
 -                                + j * ((i + 1) // (2 * col - col % 2)) * (1 // (col // row + 1)) * (1 // (i % 4 + 1))
 
 -                                + (j + i // 4) * (1 // ((i - 1) % 4 + 1))
 
 -                                + (row - (i + 2) // 4) * (1 // ((i - 2) % 4 + 1))
 
 -                                + (row - (j + (i + 1) // 4)) * (1 // ((i - 3) % 4 + 1))
 
 -                              ]
 
 -                              [
 
 -                                (j + i // 4) * (1 // (i % 4 + 1))
 
 -                                - j * ((i + 1) // (2 * col - col % 2)) * (1 // (col // row + 1)) * (1 // (i % 4 + 1))
 
 -                                + (col - (i + 3) // 4) * (1 // ((i - 1) % 4 + 1))
 
 -                                + (col - (j + (i + 2) // 4)) * (1 // ((i - 2) % 4 + 1))
 
 -                                + (i // 4) * (1 // ((i - 3) % 4 + 1))
 
 -                              ]
 
 -                     for i in range
 
 -                              (
 
 -                                 (2 * row - row % 2) * (1 // ((row - 1) // col + 1))
 
 -                                 + (2 * col - col % 2) * (1 // (col // row + 1))
 
 -                              )
 
 -                     for j in range
 
 -                              (
 
 -                                (
 
 -                                 col - (2 * (i // 4) + 1)
 
 -                                 + (i + 1) // (2 * row - row % 2) * (1 // ((row -1) // col + 1))
 
 -                                 + (i + 1) // (2 * col - col % 2) * ((2 * (i // 4) + 1) - col + row - i // 2) * (1 // (col // row + 1))
 
 -                                )
 
 -                                 * (1 // (i % 2 + 1))
 
 -                                +
 
 -                                (
 
 -                                 row - (2 * (i // 4) + 1)
 
 -                                )
 
 -                                 * (1 - 1 // (i % 2 + 1))
 
 -                              )
 
 -                             ]
 
  
- #打印matrix矩阵的顺时针打印矩阵
 
 - print(clockwise_matrix)
 
  复制代码 
 
可以看到,通过如上的一坨代码,即可以实现给定任意二维矩阵的顺时针螺旋打印,当然这写的非常不美观,不过能够实现功能,不信鱼油们可以试试(逝逝)   |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |