0

如果给我一个数字列表,我想将其中一个与接下来的两个数字交换。有没有办法一次性做到这一点,而不用两次交换第一个数字?

更具体地说,假设我有以下交换功能:

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]

现在,我如何一次将 3 与 4 和 5 交换?

预期的输出将是

列表 = [0, 1, 2, 4, 5, 3, 6, 7, 8, 9]

4

1 回答 1

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]
于 2013-11-02T15:51:49.830 回答