【python】二维数组的旋转遍历?

题目:假定有一个二维数组,要求将数组中的元素以顺时针的旋转方式打印出来。实现一个函数,使得数组的元素能按照顺时针方向打印。

分析:假定有4个箭头,分别称为top,right,bottom,left。top指向最顶行,right指向最右边一列,bottom指向最底边一行,left指向最左边一列。先把top指向的行打印出来,接着把right指向的列打印出来,然后把bottom指向的行打印出来,最后把left指向的列打印出来。然后把外围打印完毕后,把top箭头向下挪动一个位置,right箭头向左挪动一个位置,bottom向上挪动一个位置,left向右挪动一个位置。

code:

def spiralPrint(top, right, bottom, left):

    while top <= bottom and left <= right:

        # 先打印top指向的行

        for i in range(left, right + 1):

            print(array[top][i])

        # 打印right指向的行

        for i in range(top + 1, bottom + 1):

            print(array[i][right])

        # 打印bottom指向的行

        for i in range(bottom - 1, left - 1, -1):

            print(array[bottom][i])

        for i in range(bottom - 1, top, -1):

            print(array[i][left])

        top += 1

        right -= 1

        bottom -= 1

        left += 1

if __name__ == "__main__":

    n = 5

    array = [[0] * n for i in range(n)]

    for i in range(n):

        for j in range(n):

            array[i][j] = i * n + j + 1

        print(array[i])

    top = 0

    right = n - 1

    bottom = n - 1

    left = 0

    spiralPrint(top, right, bottom, left)

你可能感兴趣的:(【python】二维数组的旋转遍历?)