Учитывая следующий список:Перестановка двух подсписки в списке
my_list=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Я хочу, чтобы иметь возможность поменять подсписком my_list[2:4]
с подсписком my_list[7:10]
, как быстро и эффективно, насколько это возможно, чтобы получить новый список:
new_list=[0, 1, 7, 8, 9, 4, 5, 6, 2, 3, 10, 11, 12]
Вот моя попытка:
def swap(s1, s2, l):
seg1=l[:s1.start]+l[s2]
seg2=l[s1.stop : s2.start]
seg3=l[s1]+l[s2.stop:]
return seg1+seg2+seg3
print swap(slice(2,4), slice(7,10), [0,1,2,3,4,5,6,7,8,9,10,11,12])
Это печать де но этот способ делать это выглядит ужасно для меня.
Есть ли более простой и элегантный способ сделать это, что не будет создавать четыре новых списка для каждого вызова функции? (Я планирую назвать эту функцию много)
Я не против (на самом деле я бы предпочел) изменить исходный список, а не создавать новый экземпляр каждого вызова функции.
Как насчет 'my_list [2: 4] = my_list [7:10]'? – Moritz
Это перезапишет 'my_list [2: 4]'. –
Я не понимаю, потому что он создает: '[0, 1, 7, 8, 9, 4, 5, 6, 7, 8, 9, 10, 11, 12]' – Moritz