如何利用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列出一个文件夹及其子目录的所有文件
Jun 30 Python
全面了解python字符串和字典
Jul 07 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
python分数表示方式和写法
Jun 26 Python
对python中assert、isinstance的用法详解
Nov 27 Python
基于Python执行dos命令并获取输出的结果
Dec 30 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
python查看矩阵的行列号以及维数方式
May 22 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
Python3爬虫中Ajax的用法
Jul 10 Python
python如何写个俄罗斯方块
Nov 06 Python
Python数据模型与Python对象模型的相关总结
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和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Windows下PyMongo下载及安装教程
2015/04/27 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
使用python实现kNN分类算法
2019/10/16 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
苹果Mac升级:MacSales.com
2017/11/20 全球购物
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
欧洲领先的火车票和大巴票预订平台:Trainline
2018/12/26 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
火灾现场处置方案
2014/05/28 职场文书
应届大专生求职信
2014/06/26 职场文书
出国签证在职证明
2014/09/20 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
男生贾里读书笔记
2015/06/30 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript