如何利用Python实现n*n螺旋矩阵


Posted in Python onJanuary 18, 2022

3*3螺旋矩阵:

1 2 3

8 9 4

7 6  5

实现代码:

def spiral(n):
    matrix = [[0] * n for _ in range(n)]
    # 顺时针方向(右,下,左,上)
    dx = [0, 1, 0, -1]
    dy = [1, 0, -1, 0]
    x = y = 0
    dn = 0  # 方向指针0;向右填充,1:向下填充,2:向上填充,3:向上填充
 
    for i in range(1, n * n + 1):  # 从1开始赋值,一直到n*n
        matrix[x][y] = i
        temp_x = x + dx[dn]
        temp_y = y + dy[dn]
        if 0 <= temp_x < n and 0 <= temp_y < n and matrix[temp_x][temp_y] == 0:
            x = temp_x
            y = temp_y
        else:
            dn = (dn + 1) % 4
            x += dx[dn]
            y += dy[dn]
 
    return matrix
 
 
if __name__ == '__main__':
    n = int(input("输入矩阵n值:"))
    matrix = spiral(n)
    for i in range(n):
        print(matrix[i])

运行结果:

如何利用Python实现n*n螺旋矩阵

附:python 简单实现螺旋矩阵

创建一个大小为m * n的矩阵,
并以螺旋方式遍历它。
在遍历时,我们跟踪变量“ val”以填充下一个值,
我们将“ val”一个接一个地递增,并将其值放入矩阵中。
以下是简单实现:
def spiral_matrix(m,n):
    '''
    :param x: colunm index
    :param y: row index
    '''
    a = [[0 for _ in range(m)] for _ in range(n)]
    val = 1
    x,y = 0,0
    count = m*n
    while val <= count:
        for i in range(x, m):
            a[x][i] = val
            val += 1
        x += 1
        for i in range(y+1, n):
            a[i][m-1] = val
            val += 1
        y += 1
 
        if x < m:
            for i in range(m-2, x-2, -1):
                a[n-1][i] = val
                val += 1
            m -= 1
 
        if y < n:
            for i in range(n-2, y-1, -1):
                a[i][y-1] = val
                val += 1
            n -= 1
    for i in a:
        print(*i)
 
spiral_matrix(6,6)
# 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

总结

到此这篇关于如何利用Python实现n*n螺旋矩阵的文章就介绍到这了,更多相关Python实现n*n螺旋矩阵内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现向QQ群成员自动发邮件的方法
Nov 19 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
解析Python中的__getitem__专有方法
Jun 27 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
Python快速查找list中相同部分的方法
Jun 27 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
Python requests模块cookie实例解析
Apr 14 Python
Python urllib.request对象案例解析
May 11 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
聊聊Python String型列表求最值的问题
Jan 18 #Python
Python的三个重要函数详解
Jan 18 #Python
python多线程方法详解
Jan 18 #Python
用Python生成会跳舞的美女
基于Pygame实现简单的贪吃蛇游戏
Dec 06 #Python
Python可变集合和不可变集合的构造方法大全
Dec 06 #Python
Python实现视频中添加音频工具详解
Dec 06 #Python
You might like
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
js类型检查实现代码
2010/10/29 Javascript
JS高级笔记
2011/07/13 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
Python中endswith()函数的基本使用
2015/04/07 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
客户接待方案
2014/02/26 职场文书
死亡诗社观后感
2015/06/05 职场文书
《火烧云》教学反思
2016/02/23 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
浅析Django接口版本控制
2021/06/26 Python
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技