如何利用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 31 Python
python实现字符串和日期相互转换的方法
May 13 Python
Python爬取网页中的图片(搜狗图片)详解
Mar 23 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
Python爬虫获取图片并下载保存至本地的实例
Jun 01 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
May 27 Python
Django中提供的6种缓存方式详解
Aug 05 Python
Python while循环使用else语句代码实例
Feb 07 Python
Django单元测试中Fixtures的使用方法
Feb 26 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
jupyter notebook中美观显示矩阵实例
Apr 17 Python
解决Keras 自定义层时遇到版本的问题
Jun 16 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
Windows下的PHP5.0详解
2006/11/18 PHP
php学习之流程控制实现代码
2011/06/09 PHP
Javascript isArray 数组类型检测函数
2009/10/08 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
javascript实现table单元格点击展开隐藏效果(实例代码)
2017/04/10 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
python 实现IP子网计算
2021/02/18 Python
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
Delphi笔试题
2016/11/14 面试题
贷款承诺书范文
2014/05/19 职场文书
初中学生操行评语
2014/12/26 职场文书
业务员岗位职责
2015/02/03 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers