如何利用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的函数嵌套的使用方法
Jan 24 Python
python打开网页和暂停实例
Sep 30 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 Python
python网络应用开发知识点浅析
May 28 Python
django 数据库连接模块解析及简单长连接改造方法
Aug 29 Python
使用Keras训练好的.h5模型来测试一个实例
Jul 06 Python
Python如何定义有可选参数的元类
Jul 31 Python
实例代码讲解Python 线程池
Aug 24 Python
总结python多进程multiprocessing的相关知识
Jun 29 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
用PHP函数解决SQL injection
2006/12/09 PHP
谈谈新手如何学习PHP
2006/12/23 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
Javascript中的变量使用说明
2010/05/18 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
再探JavaScript作用域
2014/09/24 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
JavaScript操作cookie类实例
2015/03/31 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
企业法人代表任命书
2014/06/06 职场文书
计算机专业自荐信
2015/03/05 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
公司承诺书格式范文
2015/04/28 职场文书
小学生六年级作文之关于感恩
2019/08/16 职场文书
OpenCV 图像梯度的实现方法
2021/07/25 Python
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS