1

特定のリスト内の数値を移動するにはどうすればよいですか?

例(5を移動した場合):

example_list = [5,6,7,10,11,12]

出力:

[6,7,5,10,11,12]

または、12 個の出力を移動した場合:

[5,12,6,7,10,11]

それを可能にする組み込みの Python 関数はありますか?

4

3 に答える 3

2

使用collections.deque.rotate:

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

于 2013-10-29T19:53:08.293 に答える
1

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]
于 2013-10-29T19:56:30.863 に答える