给出一个列表,这些列表看起来像一个矩阵:
1 2 3
4 5 6
7 8 9
输出应为
1 4 2 7 5 3 8 6 9
基本上,给定Python中的列表列表,对角线打印行。什么是最pythonic方式来实现这一目标?我已经查看了一些C代码和for循环但是有更好的方法吗?
答案 0 :(得分:1)
>>> a = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
>>> reduce(operator.add,(list(a[::-1].diagonal(i)) for i in range(-len(a),len(a)
)))
[1, 4, 2, 7, 5, 3, 8, 6, 9]
可能会更快......(怀疑它......但它的冷却器:P)