1. ホーム
  2. python

[解決済み] Pythonでリストを回転させる効率的な方法

2022-02-15 07:39:52

質問

Pythonでリストを回転させる最も効率的な方法は何でしょうか? 今、私はこのようなものを持っています。

>>> def rotate(l, n):
...     return l[n:] + l[:n]
... 
>>> l = [1,2,3,4]
>>> rotate(l,1)
[2, 3, 4, 1]
>>> rotate(l,2)
[3, 4, 1, 2]
>>> rotate(l,0)
[1, 2, 3, 4]
>>> rotate(l,-1)
[4, 1, 2, 3]

もっといい方法はないのでしょうか?

どのように解決するのですか?

A collections.deque は、両端を引っ張ったり押したりするのに最適化されています。さらに、専用の rotate() メソッドを使用します。

from collections import deque
items = deque([1, 2])
items.append(3)        # deque == [1, 2, 3]
items.rotate(1)        # The deque is now: [3, 1, 2]
items.rotate(-1)       # Returns deque to original state: [1, 2, 3]
item = items.popleft() # deque == [2, 3]