python 列表解析及二位数组

生成4*4 的矩阵 for i in [[x for x in range(1,5)] for x in range(1,5)]: print i [[x for x in range(1,5)] for x in range(1,5)] 可以理解为 [for x in range(1,5) [x for x in range(1,5)] ##=== [1,2,3,4] ###=========[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]

[[y for y in range(1,5)] for x in range(1,5)] 可以理解为 [for x in range(1,5) [y for y in range(1,5)] ] ##========[y,y,y,y] ###========[[y,y,y,y],[y,y,y,y],[y,y,y,y],[y,y,y,y]] ###========[[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]] 执行的过程为 参考 http://codingpy.com/article/python-list-comprehensions-explained-visually/

列表解析实现 二维数组及其旋转 90度旋转

a = [[x for x in range(1,10)] for x in range(1,10)]
def spin(list):
    n = len(a)
    for j in range(n-1):         ####执行对调 的 次数n-1
        for i in range(j,n):       ######  对调元素
            a[j][i],a[i][j] = a[i][j],a[j][i]
    for x in a:
        print x

旋转的代码思路(90度44数组) 正方形 画一条对角线(左上角点和右下角点的对角线),90度就是将所有元素以这条对角线为对称轴进行对调 第一次对调 就是将正方形的上边元素与左边元素对调 第二次对调 将上与左边线向内平行移动(各个元素都在相应的正方形的上与左边上) 第三次对调 继续第二次的步骤,如果发现所有的元素都已经在画的正方形上和左边上了,那么对调这行就结束(44 的数组需要三步,55需要4步。。。。会发现nn需要n-1步) 在实现4*4数组的元素对象时(所有的对调自己写一遍),我们会发现,对调过程中元素对应的列表的key(a[key1][key2])会根据 执行的次数发生变化.对调的循环 范围为range(j,n)j (range(n-1))为对调执行的次数(这里把执行完一次左上边上所有元素的对调作为一次)即对调执行的次数循环为range(n-1)

猜你喜欢

转载自my.oschina.net/u/1775013/blog/783932