Wie verschiebe ich in Python ein Element in einen bestimmten Index in einer Liste?
104
Verwenden Sie die insert
Methode einer Liste:
l = list(...)
l.insert(index, item)
Alternativ können Sie eine Slice-Notation verwenden:
l[index:index] = [item]
Wenn Sie ein Element, das sich bereits in der Liste befindet, an die angegebene Position verschieben möchten, müssen Sie es löschen und an der neuen Position einfügen:
l.insert(newindex, l.pop(oldindex))
last index + 1
ohne Fehler einfügen . In diesem Fall wird das Element nur an die Liste angehängt.a.insert(99999, 1)
In [14]: a
Out[14]: [...., 1]
Eine etwas kürzere Lösung, die den Gegenstand nur bis zum Ende bewegt, nicht irgendwo ist:
Beispielsweise:
quelle
l.append(l.pop(0))
. Es ist nur unwesentlich länger, aber viel besser lesbar.Wenn Sie die Position des Elements nicht kennen, müssen Sie möglicherweise zuerst den Index suchen:
dann bewege es:
oder meiner Meinung nach sauberer:
quelle
pass
Aussage zusammenzucken ... niemals Ausnahmen zu verbergen - die Standardeinstellung in einem Beispiel wie diesem sollte darin bestehen, eine sauberere Fehler- oder Druckanweisung bereitzustellen ...raise ValueError(f'Unable to move item to {new_index}')
oderprint(f'Moving item to {new_index} failed. List remains unchanged.')
. Vielleichtpass
wäre es in Ordnung, wenn in einer Funktiontry_to_move_item
oder so etwas, so dass verstanden wird, dass die Operation lautlos fehlschlagen könnte.Eine sehr einfache Lösung, aber Sie müssen den Index der ursprünglichen Position und den Index der neuen Position kennen:
quelle
Ich habe einige Methoden zum Verschieben eines Elements innerhalb derselben Liste mit timeit vorgestellt. Hier sind diejenigen, die verwendet werden sollen, wenn j> i:
und hier diejenigen, die verwendet werden sollen, wenn j <= i:
Kein großer Unterschied, wenn Sie es nur ein paar Mal verwenden, aber wenn Sie schwere Dinge wie manuelles Sortieren ausführen, ist es wichtig, das schnellste zu nehmen. Ansonsten würde ich empfehlen, nur die zu nehmen, die Ihrer Meinung nach am besten lesbar ist.
quelle