矩阵的螺旋排列 Python实现
来源:互联网 发布:ubuntu看存储空间 编辑:程序博客网 时间:2024/05/22 12:16
矩阵的螺旋排列
描述
以二维列表方式给定一个M*N的矩阵(M行,N列),以螺旋的顺序返回矩阵所有元素,并按照列表形式输出,各元素以逗号为间隔。
例如,给定矩阵如下:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
那么按照螺旋形状应该返回 [1,2,3,6,9,8,7,4,5]
程序的框架参考如下:
def SpiralOrder(matrix): ...matrix = eval(input())res = SpiralOrder(matrix)print(res)
输入
示例1:[[1,2,3],[4,5,6],[7,8,9]]
输出
示例2:[1, 2, 3, 6, 9, 8, 7, 4, 5]
一开始当成输入为方阵了,写成了下面这样
def GenerateMatrix(l): length = len(l) dx, dy = [0,1,0,-1], [1,0,-1,0] res, step, x, y, num= [[0]* length for i in range(length)], length-1, 0, 0, 1 while step>0: for i in range(4): for j in range(step): res[int(x)][int(y)] = int(num) x, y, num=x+dx[i],y+dy[i],num+1 step-=2 x,y = (length-step)/2, (length-step)/2 if step==0: res[int(x)][int(y)]=int(num) return resl=eval(input())ans=GenerateMatrix(l)print(ans)
没有用到给定矩阵,如果不是等差且差值为1就不对了,况且输入还有不是方阵的
但这种简化的写法(将方向做成下标变换的数组)和一开始的赋值方式还是很有借鉴意义的
[[0]* length for i in range(length)]
附上修改的代码,不断往列表里Append
def GenerateMatrix(l): length = len(l) dx, dy = [0,1,0,-1], [1,0,-1,0] res=[] step, x, y= length-1, 0, 0 try: while step>0: for i in range(4): for j in range(step): res.append(l[int(x)][int(y)]) x, y=x+dx[i],y+dy[i] step-=2 x,y = (length-step)/2, (length-step)/2 if step==0: res.append(l[int(x)][int(y)]) return res except: return resl=eval(input())ans=GenerateMatrix(l)print(ans)
然后上课看到这种写法,很精妙,通过列表反转解决了很多问题,不再需要做四次循环还要设置循环变量,也不再用判断奇数偶数导致的最后一个的赋值需要判断,实在是太完美了
m=eval(input())ans=[]try: while True: ans+=m.pop(0) for l in m: ans.append(l.pop()) '''将每一行的最后一个元素加到列表里''' ans+=m.pop()[::-1] '''将最后一行反转后加入列表''' for l in m[::-1]: '''将剩余的行反转,将每一行的第一个加入''' ans.append(l.pop(0))except: print(ans)
阅读全文
0 0
- 矩阵的螺旋排列 Python实现
- python实现螺旋矩阵的填充
- 螺旋矩阵的实现
- 递归:求螺旋排列数字的矩阵
- 螺旋矩阵的Java实现
- 我的螺旋矩阵实现
- 螺旋矩阵的C实现
- 简单的实现螺旋矩阵
- 飘逸的python - 打印螺旋矩阵
- Python-打印螺旋矩阵
- 简单的螺旋矩阵的实现
- 蛇形矩阵,回环矩阵,数字螺旋矩阵的PHP实现
- n*n螺旋矩阵的实现
- 001螺旋矩阵的java实现
- 螺旋矩阵的两种JAVA实现
- 螺旋矩阵(c实现)
- 螺旋矩阵编程实现
- java 实现螺旋矩阵
- 手推SVM(一)-数学推导
- 欢迎使用CSDN-markdown编辑器
- 为RecyclerView添加分隔线
- redis 数据类型
- C++:cin\cin.getline()\getline()用法:
- 矩阵的螺旋排列 Python实现
- Numpy-shape函数
- SQL文件导入MySQL数据库
- VAE背后的哲学思想及数学原理
- 牛客练习赛7 B
- Python入门之一:list列表
- 【转载】SciPy for .NET & IronPython
- ssm项目一直报错,陷入死循环,解决办法
- 论文阅读笔记-Siamese instance search for tracking(转)