如何利用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的Tornado框架中的协程异步实现原理
Apr 23 Python
python生成IP段的方法
Jul 07 Python
Python与Java间Socket通信实例代码
Mar 06 Python
利用python实现简单的循环购物车功能示例代码
Jul 05 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 Python
Python中的xlrd模块使用原理解析
May 21 Python
python def 定义函数,调用函数方式
Jun 02 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
GitHub上值得推荐的8个python 项目
Oct 30 Python
python实现ping命令小程序
Dec 28 Python
python playwright 自动等待和断言详解
Nov 27 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使用COPY函数更新配置文件的方法
2015/06/18 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
jQuery 获取对象 基本选择与层级
2010/05/31 Javascript
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
DOM 事件流详解
2015/01/20 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
JS如何生成动态列表
2020/09/22 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python处理时间日期坐标轴过程详解
2019/06/25 Python
python实现最大优先队列
2019/08/29 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
Python 求数组局部最大值的实例
2019/11/26 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
致跳高运动员加油稿
2014/02/12 职场文书
团队激励口号
2014/06/06 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
红色电影观后感
2015/06/18 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js