Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改矩阵中元素的顺序(python)_Python_Matrix - Fatal编程技术网

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

更改矩阵中元素的顺序(python),python,matrix,Python,Matrix,我想像这样“循环”矩阵中的元素: mat = [[0],[1],[2]] 如何将这些元素的索引更改为如上所述的循环?对于大型列表,使用和的组合将是最有效的: mat = [[2],[0],[1]] mat = [[1],[2],[0]] mat = [[0],[1],[2]] ... >>> for i in xrange(len(mat)): ... print(mat[i:] + mat[:i]) ... [[0], [1], [2]] [[1], [2], [0]

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

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

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

对于大型列表,使用和的组合将是最有效的:

mat = [[2],[0],[1]]
mat = [[1],[2],[0]]
mat = [[0],[1],[2]]
...
>>> for i in xrange(len(mat)):
...  print(mat[i:] + mat[:i])
... 
[[0], [1], [2]]
[[1], [2], [0]]
[[2], [0], [1]]
这将适用于您在列表中放置的任何内容。 此外,如果您想在另一个方向上循环,可以将第一条环线替换为:

>>> 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]]

对于大型列表,使用和的组合将是最有效的:

>>> for i in xrange(len(mat)):
...  print(mat[i:] + mat[:i])
... 
[[0], [1], [2]]
[[1], [2], [0]]
[[2], [0], [1]]
这将适用于您在列表中放置的任何内容。 此外,如果您想在另一个方向上循环,可以将第一条环线替换为:

>>> 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]]

你为什么要这样做?我不清楚您何时要排列元素以及如何访问它们。为什么要这样做?我不清楚您何时要排列元素以及如何访问它们。我要说的是颠倒
yield
append
操作的顺序,所以第一个值是初始值。我要说颠倒
yield
append
操作的顺序,所以第一个值是初始值。