如何在给定列表中移动数字?
例如(如果我移动 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 函数可以让我这样做?
pop
您可以使用列表的内置insert
功能。在这里,您指定要弹出的元素的索引以及要插入它的索引。
example_list = [5,6,7,10,11,12]
example_list.insert(2,example_list.pop(0))
[6、7、5、10、11、12]
对于第二个例子:
example_list.insert(0,example_list.pop(5))
[12、6、7、5、10、11]
这也可以作为两步过程来完成。
element = example_list.pop(5)
example_list.insert(0,element)
顺便说一句,如果您不想自己指定索引,则可以使用该index
函数查找值的第一个索引。
element = example_list.pop(example_list.index(12))
example_list.insert(0,element)
>>> 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
.
你可以这样做:
def move(a_list, original_index, final_index):
a_list.insert(final_index, a_list.pop(original_index))
return a_list
例子:
>>> move([5,6,7,10,11,12], 0, 2)
[6,7,5,10,11,12]
如果你想移动列表中的前 5 个,那么你可以这样做:
>>> my_list = [5,6,7,10,11,12]
>>> move(my_list, my_list.index(5), 2)
[6,7,5,10,11,12]