Python实现螺旋矩阵的填充算法示例

 更新时间:2017年12月28日 08:59:14   作者:afanty_mo  
这篇文章主要介绍了Python实现螺旋矩阵的填充算法,结合实例形式分析了Python实现螺旋矩阵的相关循环、遍历、判断、运算等操作技巧,需要的朋友可以参考下

本文实例讲述了Python实现螺旋矩阵的填充算法。分享给大家供大家参考,具体如下:

afanty的分析:

关于矩阵(二维数组)填充问题自己动手推推,分析下两个下表的移动规律就很容易咯。

对于螺旋矩阵,不管它是什么鬼,反正就是依次向右、向下、向右、向上移动。

向右移动:横坐标不变,纵坐标加1
向下移动:纵坐标不变,横坐标加1
向右移动:横坐标不变,纵坐标减1
向上移动:纵坐标不变,横坐标减1

代码实现:

#coding=utf-8
import numpy
'''''
Author: afanty
Date:  2016/6/23
'''
def helixMatrix(n):
  '''''实现n维螺旋矩阵的填充
  :param n:维数
  :return:螺旋矩阵
  '''
  if not isinstance(n, int) or n <= 0:
    raise ValueError('请输入合适的维数')
  matrix = numpy.zeros((n, n))
  left_top = 0
  right_buttom = n - 1
  number = 1
  while left_top < right_buttom:
    # 向右移动,横坐标不变,纵坐标+1,number+1
    i = left_top
    while i < right_buttom:
      matrix[left_top][i] = number
      i += 1
      number += 1
    # while
    # 向下移动,纵坐标不变,横坐标+1,number+1
    i = left_top
    while i < right_buttom:
      matrix[i][right_buttom] = number
      i += 1
      number += 1
    #while
    # 向左移动,横坐标不变,纵坐标-1,number+1
    i = right_buttom
    while i > left_top:
      matrix[right_buttom][i] = number
      i -= 1
      number += 1
    # while
    # 向上移动,纵坐标不变,横坐标-1,number+1
    i = right_buttom
    while i > left_top:
      matrix[i][left_top] = number
      i -= 1
      number += 1
    # while
    left_top += 1
    right_buttom -= 1
  # while
  if n % 2 != 0:
    matrix[n / 2][n / 2] = n * n
  return matrix
# end
print("脚本之家测试结果:")
print helixMatrix(5)

运行结果:

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • python和Appium移动端多设备自动化测试框架实现

    python和Appium移动端多设备自动化测试框架实现

    这篇文章主要介绍了python和Appium移动端多设备自动化测试框架实现,基于pytest和Appium框架,支持Android和iOS功能自动化的测试框架的相关内容,需要的小伙伴可以参考一下
    2022-04-04
  • Python使用HTTP POST上传WAV文件的方法

    Python使用HTTP POST上传WAV文件的方法

    Python是一个非常流行的编程语言,可以用于开发不同类型的应用程序。其中,上传文件是一个非常常见的需求。具体而言,我们探讨了使用HTTP POST请求上传单个和多个WAV文件的方法。无论你是需要将音频文件上传到云存储还是服务器,这些方法都能帮助你上传文件。
    2023-06-06
  • 利用Python实现批量裁剪图片

    利用Python实现批量裁剪图片

    这篇文章主要为大家详细介绍了如何基于Python如何批量裁剪图片并保存,文中的示例代码讲解详细,具有一定的参考价值,有需要的小伙伴可以了解一下
    2023-10-10
  • Python格式化输出的几种汇总

    Python格式化输出的几种汇总

    这篇文章主要介绍了Python格式化输出的几种汇总,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Python爬虫基础之简单说一下scrapy的框架结构

    Python爬虫基础之简单说一下scrapy的框架结构

    今天给大家带来的是关于Python爬虫的相关知识,文章围绕着scrapy的框架结构展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Python中使用第三方库xlutils来追加写入Excel文件示例

    Python中使用第三方库xlutils来追加写入Excel文件示例

    这篇文章主要介绍了Python中使用第三方库xlutils来追加写入Excel文件示例,本文直接给出追加写入示例和追加效果,需要的朋友可以参考下
    2015-04-04
  • 一文详解Python中生成器的原理与使用

    一文详解Python中生成器的原理与使用

    生成器表达式本质上就是一个迭代器,是定义迭代器的一种方式,是允许自定义逻辑的迭代器。本文将详细讲解一下Python中生成器的原理与使用,需要的可以参考一下
    2022-05-05
  • 用python 制作图片转pdf工具

    用python 制作图片转pdf工具

    这篇文章主要介绍了用python 制作图片转pdf工具的思路及代码,非常详细,有需要的小伙伴参考下
    2015-01-01
  • 解决springboot yml配置 logging.level 报错问题

    解决springboot yml配置 logging.level 报错问题

    今天小编就为大家分享一篇解决springboot yml配置 logging.level 报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 利用rest framework搭建Django API过程解析

    利用rest framework搭建Django API过程解析

    这篇文章主要介绍了利用rest framework搭建Django API过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论