python练习--生成螺旋矩阵

Posted pyonwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python练习--生成螺旋矩阵相关的知识,希望对你有一定的参考价值。

 螺旋矩阵,像下面这样,看了就能理解,不多解释了。

[[ 1.  2.  3.  4.  5.  6.]
 [20. 21. 22. 23. 24.  7.]
 [19. 32. 33. 34. 25.  8.]
 [18. 31. 36. 35. 26.  9.]
 [17. 30. 29. 28. 27. 10.]
 [16. 15. 14. 13. 12. 11.]]

说一下我的思路:
1.先生成一个零矩阵,再往里面填充数字;
2.每填充完一个,都判断下一步该往哪走,下一步有四种状态:横+、纵+、横-、纵-,依次循环。
3.每种状态间切换的条件:原状态的下一步的元素已被填充(!=0)或索引溢出。

下面是一种具体实现(上面只是整体思路,与实现并不完全对应):
 1 import numpy as np
 2 def r_matrix(n):
 3     mt = np.zeros(n**2).reshape(n,n)
 4     x, y = 0, 0
 5     num = 1
 6     direction = 1
 7     
 8     while mt[x][y] == 0:
 9         mt[x][y] = num
10         num += 1
11         if -1<y+direction<n  and mt[x][y+direction] == 0:
12             y += direction
13         elif x+direction<n and mt[x+direction][y] == 0:
14             x += direction
15         else:
16             direction = -direction
17             y += direction
18     return mt  

以上是关于python练习--生成螺旋矩阵的主要内容,如果未能解决你的问题,请参考以下文章

python 生成螺旋矩阵

Python 基础练习 PAT水题

Leetcode练习(Python):数组类:第54题:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

在Python中理解顺时针螺旋的打印矩阵

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:螺旋矩阵

python练习题四