Wenn ich eine Liste habe, [a,b,c,d,e]
wie kann ich die Artikel auf beliebige Weise neu anordnen [d,c,a,b,e]
?
Edit: Ich möchte sie nicht mischen. Ich möchte sie in einer vordefinierten Weise nachbestellen. (Ich weiß zum Beispiel, dass das dritte Element in der alten Liste das erste Element in der neuen Liste werden sollte.)
Antworten:
Sie können es so machen
quelle
mylist[:] = [mylist[i] for i in myorder]
quelle
quelle
Wird die endgültige Reihenfolge durch eine Liste von Indizes definiert?
bearbeiten: meh. AJ war schneller ... Wie kann ich eine Liste in Python neu anordnen?
quelle
quelle
Sie können Ihre eigene Sortierfunktion bereitstellen, um
list.sort()
:quelle
Wenn Sie Numpy verwenden, gibt es eine gute Möglichkeit, dies zu tun:
Dieser Code gibt Folgendes zurück:
quelle
Wenn Ihnen die Effizienz nicht so wichtig ist, können Sie sich auf die Array-Indizierung von numpy verlassen, um sie elegant zu gestalten:
quelle
Nach meinem Verständnis Ihrer Frage möchten Sie anscheinend eine Permutation anwenden, die Sie auf a angeben
list
. Dies erfolgt durch Angabe eines anderenlist
(nennen wir esp
), der die Indizes der Elemente des Originals enthältlist
, die im permutierten erscheinen sollenlist
. Anschließendp
erstellen Sie ein neueslist
Element, indem Sie einfach das Element an jeder Position durch das Element ersetzen, dessen Index sich an dieser Position in befindetp
.Dies wird gedruckt
['d', 'c', 'a', 'b', 'e']
.Dies schafft tatsächlich ein neues
list
, kann aber trivial modifiziert werden, um das Original "an Ort und Stelle" zu permutieren.quelle
Eine weitere Sache, die berücksichtigt werden kann, ist die andere Interpretation, auf die Darkless hinweist
Code in Python 2.7
Hauptsächlich:
Nach Index neu ordnen
Dies druckt ['c', 'd', 'b', 'a', 'e']
quelle
quelle
Dies habe ich verwendet, als ich auf dieses Problem gestoßen bin.
EX: für die Kleinbuchstaben
Die Liste wird einfach auf einen bestimmten Index verschoben
quelle