如何利用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中使用pprint函数进行格式化输出的教程
Apr 07 Python
详解Python中的循环语句的用法
Apr 09 Python
Django框架中的对象列表视图使用示例
Jul 21 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
python实现RSA加密(解密)算法
Feb 17 Python
python读写json文件的简单实现
Apr 11 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
python write无法写入文件的解决方法
Jan 23 Python
Django实现学生管理系统
Feb 26 Python
简单了解python高阶函数map/reduce
Jun 28 Python
浅析NumPy 切片和索引
Sep 02 Python
tensorflow中的数据类型dtype用法说明
May 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基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
Python正则表达式使用范例分享
2016/12/04 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
python实现两个字典合并,两个list合并
2019/12/02 Python
python实现AdaBoost算法的示例
2020/10/03 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
视光学毕业生自荐书范文
2014/02/13 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
老人节标语大全
2014/10/08 职场文书
亲戚关系证明
2015/06/24 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
Python集合的基础操作
2021/11/01 Python
linux下安装redis图文详细步骤
2021/12/04 Redis
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android