如何利用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多线程和队列管理shell程序
Aug 04 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
python实现控制台输出彩色字体
Apr 05 Python
Python函数参数分类原理详解
May 28 Python
python导入库的具体方法
Jun 18 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
基于Django快速集成Echarts代码示例
Dec 01 Python
python实现高效的遗传算法
Apr 07 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 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
PHPEXCEL 使用小记
2013/01/06 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
python 接收处理外带的参数方法
2018/12/03 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
django-filter和普通查询的例子
2019/08/12 Python
python global和nonlocal用法解析
2020/02/03 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
详解Python3中的 input() 函数
2020/03/18 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
中专生毕业自我鉴定
2013/11/01 职场文书
班级活动策划书
2014/02/06 职场文书
汽修专业自荐信
2014/07/07 职场文书
服务行业演讲稿
2014/09/02 职场文书
2014年检验科工作总结
2014/11/22 职场文书
创卫工作总结2015
2015/04/22 职场文书
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python