Python算法设计 - 螺旋矩阵

一、螺旋矩阵

螺旋矩阵是一个古老的玩具算法,实现螺旋的一种有趣的方法是填充顶部行并旋转矩阵来展开序列。

幸运的是,旋转和对称有着密切的关系,任何一个旋转能用点线对称或用两条线对称来表述,这正是我们想要的情况,我们所需要做的就是水平翻转矩阵和转置

二、Python算法实现

from itertools import count

def spiral(n):
    matrix = [range(i * n + n)[-n:] for i in range(n)]
    X, C, R = {
    
    }, count(1), matrix
    while R:
        X.update(zip(R[0], C))
        R = list(zip(*[i[::-1] for i in R[1:]]))
    return [[X[j] for j in i] for i in matrix]


for i in spiral(5):
    print('\t'.join(map(str, i)))
  • update() 方法用于更新字典中的键/值对,可以修改存在的键对应的值,也可以添加新的键/值对到字典中
  • zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用*号操作符,可以将元组解压为列表。在Python3中如需展示列表,需手动用list()转换


输出结果:
在这里插入图片描述

三、作者Info

Author:小鸿的摸鱼日常,Goal:让编程更有趣!

专注于算法、爬虫,游戏开发,数据分析、自然语言处理,AI等,期待你的关注,让我们一起成长、一起Coding!

版权说明:本文禁止抄袭、转载,侵权必究!

猜你喜欢

转载自blog.csdn.net/qq_44000141/article/details/130352607
今日推荐