python-二维数组实现90度旋转

本篇主要介绍了对一个N*N的数组,如果进行90度的旋转

首先,定义一个一维数组很简单,如下:

a = [i for i in range(10)]
print(a)

-----结果-----
0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

此写法与下面的写法是相同的效果:

a = []
for i in range(10):
    a.append(i)
print(a)

-----结果-----
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  

那么二维数组应该如何进行创建呢,如下:

a = [[col for col in range(4)] for row in range(4)]            #创建一个4*4的二维数组
print(a)

-----结果----
[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]

  

如果想要直观一些,稍微调整下:

a = [[col for col in range(4)] for row in range(4)]
for i in a:
    print(i)

-----结果-----
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]

  

接下来我们就要针对这个数组进行90度的旋转,把

[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3]

转换为:

[0, 0, 0, 0]
[1, 1, 1, 1]
[2, 2, 2, 2]
[3, 3, 3, 3]

要实现该功能,我们先把步骤拆为3步:

第一步:

第二步:

第三步:

代码如下:

data = [[col for col in range(4)] for row in range(4)]

for row_index, row in enumerate(data):
    for col_index in range(row_index, len(row)):
        tmp = data[col_index][row_index]                        #设置一个临时变量
        data[col_index][row_index] = row[col_index]
        data[row_index][col_index] = tmp
    print(‘‘)               #防止打印结果看上去混乱,输入一个空内容
    for r in data:          #分步骤打印出转换结果
        print(r)

-----结果-----
[0, 0, 0, 0]
[1, 1, 2, 3]
[2, 1, 2, 3]
[3, 1, 2, 3]

[0, 0, 0, 0]
[1, 1, 1, 1]
[2, 2, 2, 3]
[3, 3, 2, 3]

[0, 0, 0, 0]
[1, 1, 1, 1]
[2, 2, 2, 2]
[3, 3, 3, 3]

[0, 0, 0, 0]
[1, 1, 1, 1]
[2, 2, 2, 2]
[3, 3, 3, 3]

  

时间: 2024-10-05 04:21:28

python-二维数组实现90度旋转的相关文章

leetcode——Rotate Image(二维数组顺时针旋转90度)

题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). Follow up: Could you do this in-place? 分析: 二维数组a[n][n]顺时针旋转90度,要解决这个问题,无疑,第一件事儿就是找规律. 当n=1时,不用动了. 当n=2时, 旋转之后变为 有: a[0][0] = a[1][0] a[1][0] = a[1

Python学习笔记 之 递归、二维数组顺时针旋转90°、正则表达式

递归.二维数组顺时针旋转90°.正则表达式 1.   递归算法是一种直接或间接调用自身算法的过程. 特点: 递归就是在过程或函数里调用自身 明确的递归结束条件,即递归出口 简洁,但是不提倡 递归次数多容易造成栈溢出 要求: 每次调用递归规模上有所减小 前一次为后一次做准备 规模较小时必须直接给出解答而不再进行递归调用 例子:递归实现二分法 1 def searchMyData(mydate,a1): 2 mid = int(len(mydate)/2) 3 if mid >= 1: 4 if m

python 二维数组90°旋转

题目: 使用python生成一个4×4二维数组并将其顺时针旋转90° 源码如下: import random datarow=[] data=[] for i in range(4):     for j in range(4):         datarow.append(random.randint(10,80))     data.append(datarow)     datarow = [] print("data") for k in data:     print(k)

python二维数组

今天..好多不会的,慢慢补充 1.python的二维数组初始化 s = [[0 for i in range(3)]for i in range(3)] 这样就初始了一个3*3的二维数组 = [[0 for in range(col_numbers)] for i in range(rows_numbers)] 2. with open('test.txt','rb') as f: s = f.readline() s的结尾是带着\r\n的 所以使用 s.strip('\r\n') strip参

python二维数组的创建

话不多说,代码伺候 m = [[0]*5]*3 #创建一个3行5列的二维数组 m[1][2]=1 print(m) 输出结果为: 分析: m = [[0]*5]*3只是指向三个空列表的引用. 创建一个二维数组的正确方法是: m = [[0]*5 for i in range(3)]    #创建一个3行5列的二维数组 原文地址:https://www.cnblogs.com/xiaohaodeboke/p/11962090.html

python 二维数组赋值问题

[[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用, 修改任何一个元素都会改变整个列表 所以需要用另外一种方式进行创建多维数组,以免浅拷贝 >>> lists = [[] for i in range(3)] 原文地址:https://www.cnblogs.com/qy-blogs/p/9676670.html

Python二维数组,坑苦了

myList = [[0] * 3] * 4 但是当操作myList[0][1] = 1时,发现整个第二列都被赋值,变成 [[0,1,0], [0,1,0], [0,1,0], [0,1,0]] myList = [([0] * 3) for i in range(4)] 避免浅拷贝...

python 二维数组键盘输入

1 m = int(input()) 2 grid = [[] for i in range(m)] 3 for i in range(m): 4 line = input().split(' ') 5 for j in range(len(line)): 6 grid[i].append(int(line[j])) 原文地址:https://www.cnblogs.com/reaptomorrow-flydream/p/9613847.html

python 二维数组 转 矩阵

x = numpy.array([[1,2,3],[4,5,6],[7,8,9]]) print x print x.shape 输出 [[1 2 3] [4 5 6] [7 8 9]] (3L, 3L) [Finished in 0.2s] 原文地址:https://www.cnblogs.com/sea-stream/p/10801261.html