特定のリスト内の数値を移動するにはどうすればよいですか?
例(5を移動した場合):
example_list = [5,6,7,10,11,12]
出力:
[6,7,5,10,11,12]
または、12 個の出力を移動した場合:
[5,12,6,7,10,11]
それを可能にする組み込みの Python 関数はありますか?
特定のリスト内の数値を移動するにはどうすればよいですか?
例(5を移動した場合):
example_list = [5,6,7,10,11,12]
出力:
[6,7,5,10,11,12]
または、12 個の出力を移動した場合:
[5,12,6,7,10,11]
それを可能にする組み込みの Python 関数はありますか?
>>> from collections import deque
>>> lis = [5,6,7,10,11,12]
>>> d = deque(lis)
>>> d.rotate(1)
>>> d
deque([12, 5, 6, 7, 10, 11])
>>> d.rotate(-2)
>>> d
deque([6, 7, 10, 11, 12, 5])
ヘルプdeque.rotate
:
rotate(...)
Rotate the deque n steps to the right (default n=1). If n is negative,
rotates left.
7 の後に 5 を移動するには:
>>> lis = [5,6,7,10,11,12]
>>> x = lis.pop(lis.index(5))
>>> lis.insert(lis.index(7)+1 , x)
>>> lis
[6, 7, 5, 10, 11, 12]
最初に一致した項目のインデックスを返すことに注意してください。list.index
一致したすべての項目のインデックスを取得するには、 を使用しますenumerate
。
You could do this:
def move(a_list, original_index, final_index):
a_list.insert(final_index, a_list.pop(original_index))
return a_list
Example:
>>> move([5,6,7,10,11,12], 0, 2)
[6,7,5,10,11,12]
If you wanted to move the first 5 in the list then you could do this:
>>> my_list = [5,6,7,10,11,12]
>>> move(my_list, my_list.index(5), 2)
[6,7,5,10,11,12]