względu na poniższej liście:Zamiana dwa listy zagnieżdżone na liście
my_list=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Chcę, aby móc jak najszybciej i jak najefektywniej zamienić podmenu my_list[2:4]
z podmenu my_list[7:10]
, aby uzyskać nowa lista:
new_list=[0, 1, 7, 8, 9, 4, 5, 6, 2, 3, 10, 11, 12]
Oto moja próba:
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])
ten jest drukowany DE spontaniczne wyniki, chociaż ten sposób robienia tego wygląda okropnie.
Czy jest to prostszy i bardziej elegancki sposób, który nie tworzy czterech nowych list dla każdego wywołania funkcji? (Mam zamiar nazwać tę funkcję bardzo często)
Nie mam nic przeciwko (właściwie wolałbym) zmienianie oryginalnej listy, zamiast tworzenia nowej instancji dla każdej funkcji.
Co z 'my_list [2: 4] = my_list [7:10]'? – Moritz
To spowoduje nadpisanie 'my_list [2: 4]'. –
Nie rozumiem, ponieważ tworzy: '[0, 1, 7, 8, 9, 4, 5, 6, 7, 8, 9, 10, 11, 12]' – Moritz