mat = [[0],[1],[2]]
我想「循環」我的矩陣這樣的元素:更改元素的矩陣(蟒蛇)命令
mat = [[2],[0],[1]]
mat = [[1],[2],[0]]
mat = [[0],[1],[2]]
...
如何能夠將這些元素的索引我改變循環像上面?
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]]
對於使用的deque組合大名單和generator將是最有效的:
>>> 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())
我想說的是扭轉「yield」和「append」操作的順序,所以第一個值是最初的值。 – agf
你爲什麼要這麼做?當你想要排列元素以及你將如何訪問它們時,我還不清楚。 –