更改矩阵中的元素顺序(python)

时间:2011-11-05 13:41:50

标签: python matrix

mat = [[0],[1],[2]]

我想像我这样“循环”我的矩阵元素:

mat = [[2],[0],[1]]
mat = [[1],[2],[0]]
mat = [[0],[1],[2]]
...

如何将这些元素的索引更改为如上所述循环?

2 个答案:

答案 0 :(得分:2)

>>> for i in xrange(len(mat)):
...  print(mat[i:] + mat[:i])
... 
[[0], [1], [2]]
[[1], [2], [0]]
[[2], [0], [1]]

答案 1 :(得分:1)

对于使用dequegenerator组合的大型列表,效率最高:

>>> import collections.deque
>>> def list_cycler_gen(lst):
        q = collections.deque(lst,len(lst))
        while True:
            q.appendleft(q.pop())
            yield list(q)

>>> gen = list_cycler_gen([[0],[1],[2]])
>>> gen.next()
[[2], [0], [1]]
>>> gen.next()
[[1], [2], [0]]
>>> gen.next()
[[0], [1], [2]]

这适用于您在列表中放置的任何内容。 此外,如果您想要在另一个方向上循环,可以用以下代码替换第一个循环线:

q.append(q.popleft())