如何利用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对小数进行除法运算的正确方法示例
Aug 25 Python
Python正则表达式匹配中文用法示例
Jan 17 Python
flask-socketio实现WebSocket的方法
Jul 31 Python
python使用循环打印所有三位数水仙花数的实例
Nov 13 Python
对Python协程之异步同步的区别详解
Feb 19 Python
python将字母转化为数字实例方法
Oct 04 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
Python3自动生成MySQL数据字典的markdown文本的实现
May 07 Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
Nov 12 Python
python爬虫泛滥的解决方法详解
Nov 25 Python
python中altair可视化库实例用法
Jan 26 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 a simple smtp class
2007/11/26 PHP
PHP 文件类型判断代码
2009/03/13 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
php实现搜索类封装示例
2016/03/31 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
PHP7 其他修改
2021/03/09 PHP
js tab效果的实现代码
2009/12/26 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
js获取ip和地区
2017/03/10 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
2019/12/12 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
Python守护线程用法实例
2017/06/23 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
医院实习介绍信
2014/01/12 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
平安工地建设方案
2014/05/06 职场文书
新农村建设标语
2014/06/24 职场文书
大学运动会通讯稿
2015/07/18 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript