2013-11-02 4 views
0

Если мне прислан список чисел, и я хочу поменять один из них на следующие два числа. Есть ли способ сделать это одним выстрелом, не меняя первый номер дважды?обмен одним номером с двумя номерами в списке на python

Чтобы быть более конкретным, скажем, у меня есть следующая функция подкачки:

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]

+8

Можете ли вы дать нам а) примеры ввода и ожидаемого вывода и б) собственные попытки решить эту проблему? –

ответ

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] 
+0

Да, это то, чего я хочу. Но есть ли способ использовать мою функцию подкачки для этого? – rain

+0

@ VrishtiDutta Я обновил свое решение, чтобы использовать функцию на этот раз. –

+0

Большое вам спасибо! – rain

Смежные вопросы