如何利用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中的线程进行网络编程的入门教程
Apr 15 Python
python实现从ftp服务器下载文件的方法
Apr 30 Python
Python中处理字符串之islower()方法的使用简介
May 19 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
Python面向对象编程基础解析(一)
Oct 26 Python
Python进程间通信Queue实例解析
Jan 25 Python
python构建深度神经网络(续)
Mar 10 Python
Python unittest单元测试框架总结
Sep 08 Python
Python+OpenCV图片局部区域像素值处理详解
Jan 23 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
python查看矩阵的行列号以及维数方式
May 22 Python
Django nginx配置实现过程详解
Sep 10 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中的比较运算符详解
2013/10/28 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python版微信红包分配算法
2015/05/04 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
python开发中range()函数用法实例分析
2015/11/12 Python
Python中动态创建类实例的方法
2017/03/24 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
洗发水广告词
2014/03/13 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
班主任班级寄语大全
2014/04/04 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
电子商务求职信
2014/06/15 职场文书
工资收入证明
2014/10/07 职场文书
优秀班主任材料
2014/12/16 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
会计求职信怎么写
2015/03/20 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
如何使用pdb进行Python调试
2021/06/30 Python