当前位置:   article > 正文

python 数组按反对角线顺序输出_python如何将数据沿对角线输出

python如何将数据沿对角线输出

题目简述:
假如有一个3行4列的数字
1,2,3,4
5,6,7,8
9,10,11,12
要按1,2,5,3,6,9,4,7,10,8,11,12的顺序输出

输入样例样例:
2
4
1,2,3,4,5,6,7,8
输出样例:
1 2 5 3 6 4 7 8

思路:
一开始我想到是弄成2维数组,m,n记录遍历位置,越界后返回合法位置继续遍历,后来我想到了一种巧妙思路
仔细观察不难发现遍历的时候越界一般会返回第一行或者最后一列之后再按反对角线遍历
那么我可以建立2个数组,一个只放原数组第一行和最后一列的元素,第二个数组放原数组剩下的元素
比如题目描述
A=[1,2,3,4,8,12]
B=[5,6,7,9,10,11]
遍历A中的元素,当A中元素+(5-2)在B中存在就输出

 for i in A:
            print(i, end=' ')
            while B.count(i + T) != 0:
                print(i + T, end='')
                i += T
  • 1
  • 2
  • 3
  • 4
  • 5

源代码:

class ArrayItem():
    def Method(self):
        A = []
        B = []
        m = input('row:')
        n = input('col:')
        m = int(m)
        n = int(n)
        a = []
        a.extend(input("Please input a array ,item split with ',': ").split(','))
        b = []
        for i in a:
            b.append(int(i))
        if len(b)!=m*n:
            print('Error!!!')
        else:
            for i in range(0, n):
                A.append(b[i])
            k = b[n - 1] + n
            while b.count(k) != 0:
                A.append(k)
                k += n
            for i in b:
                if A.count(i) == 0:
                    B.append(i)
            T = b[n] - b[1]
            for i in A:
                print(i, end=' ')
                while B.count(i + T) != 0:
                    print(i + T, end='')
                    i += T

def main():
    array=ArrayItem()
    array.Method()

if __name__ == '__main__':
    main()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

效果图:
在这里插入图片描述
后记:
任何题目要多想想办法,解法不是唯一的,简洁是永恒的追求。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/530379
推荐阅读
相关标签
  

闽ICP备14008679号