如何利用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和GO语言实现的消息摘要算法示例
Mar 10 Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 Python
基于并发服务器几种实现方法(总结)
Dec 29 Python
django模板加载静态文件的方法步骤
Mar 01 Python
python实现抖音点赞功能
Apr 07 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
python 读取二进制 显示图片案例
Apr 24 Python
Pycharm github配置实现过程图解
Oct 13 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
DRF使用simple JWT身份验证的实现
Jan 14 Python
python基础之类属性和实例属性
Oct 24 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
JavaScript prototype属性深入介绍
2012/11/27 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
vue-cli 首屏加载优化问题
2018/11/06 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
python的help函数如何使用
2020/06/11 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
会计找工作求职信范文
2013/12/09 职场文书
机关搬迁方案
2014/05/18 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
企业诚信承诺书
2014/05/23 职场文书
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers