如果给我一个数字列表,我想将其中一个与下两个数字交换。 有没有办法一次性完成这项任务,而无需交换第一个数字两次?
更具体地说,假设我有以下交换功能:
def swap_number(list, index):
'''Swap a number at the given index with the number that follows it.
Precondition: the position of the number being asked to swap cannot be the last
or the second last'''
if index != ((len(list) - 2) and (len(list) - 1)):
temp = list[index]
list[index] = list[index+1]
list[index+1] = temp
现在,我如何使用此功能将数字与接下来的两个数字交换,而不会在数字上调用两次交换。
例如:我有以下列表:list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
现在,如何在一次拍摄中将4与5和5交换?
预期输出为
list = [0,1,2,4,5,3,6,7,8,9]
答案 0 :(得分:1)
这样的东西?
def swap(lis, ind):
lis.insert(ind+2, lis.pop(ind)) #in-place operation, returns `None`
return lis
>>> lis = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> lis = swap(lis, 3)
>>> lis
[0, 1, 2, 4, 5, 3, 6, 7, 8, 9]