Angesichts der folgende Liste:Swapping zwei Teil-Listen in einer Liste
my_list=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Ich mag die Unterliste tauschen können my_list[2:4]
mit der Unterliste my_list[7:10]
so schnell und so effizient wie möglich zu bekommen, das neue Liste:
new_list=[0, 1, 7, 8, 9, 4, 5, 6, 2, 3, 10, 11, 12]
Hier ist mein Versuch:
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])
das die de druckt sierte Ausgabe, obwohl diese Art, es zu tun, für mich schrecklich aussieht.
Gibt es einen einfacheren und eleganteren Weg, um für jeden Funktionsaufruf vier neue Listen zu erstellen? (Ich plane, diese Funktion viel zu nennen)
Es macht mir nichts aus (eigentlich würde ich bevorzugen), die ursprüngliche Liste zu ändern, anstatt neue Instanz jeden Funktionsaufruf zu erstellen.
Was ist mit 'my_list [2: 4] = meine_liste [7:10]'? – Moritz
Dies überschreibt 'my_list [2: 4]'. –
Ich verstehe es nicht, weil es erzeugt: '[0, 1, 7, 8, 9, 4, 5, 6, 7, 8, 9, 10, 11, 12]' – Moritz