如何利用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制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
Python中time模块和datetime模块的用法示例
Feb 28 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
python重试装饰器的简单实现方法
Jan 31 Python
Python list与NumPy array 区分详解
Nov 06 Python
Python数据持久化存储实现方法分析
Dec 21 Python
python3通过qq邮箱发送邮件以及附件
May 20 Python
Python全局变量与global关键字常见错误解决方案
Oct 05 Python
requests在python中发送请求的实例讲解
Feb 17 Python
python playwright 自动等待和断言详解
Nov 27 Python
python微信智能AI机器人实现多种支付方式
Apr 12 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反转字符串函数strrev()函数的用法
2012/02/04 PHP
脚本收藏iframe
2006/07/21 Javascript
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
Ext 今日学习总结
2010/09/19 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
2015/11/02 Javascript
JavaScript知识点整理
2015/12/09 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
python使用socket远程连接错误处理方法
2015/04/29 Python
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
python图片验证码生成代码
2016/07/02 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
python3.x实现base64加密和解密
2019/03/28 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
聊城大学毕业生自荐书
2014/02/01 职场文书
英语教师岗位职责
2014/03/16 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书
Golang 链表的学习和使用
2022/04/19 Golang
Java实现带图形界面的聊天程序
2022/06/10 Java/Android
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS