erstellen einer reverse-Methode für eine python-Liste von Grund auf neu
Ich möchte erstellen Sie eine reverse-Methode für eine Liste. Ich weiß, es gibt bereits eine solche Methode gebaut in python, aber ich will versuchen, es von Grund auf. Hier ist, was ich habe und es scheint Sinn zu machen aber es gibt die Liste in der gleichen Reihenfolge. Mein Verständnis war, dass Listen sind mutable und ich konnte nur neu zuweisen der Werte in der Schleife.
def reverse(data_list):
length = len(data_list)
s = length
for item in data_list:
s = s - 1
data_list[s] = item
return data_list
InformationsquelleAutor | 2011-03-09
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie die Liste, die Sie Durchlaufen (data_list), weil der, dass es nicht funktioniert , versuchen Sie es so:
[None]*length
wird eine Liste erstellen, wie diese [None, None ...] die Länge der Zeit, und übernew_list = []
wird nicht funktionieren, weil dieser erstellen Sie eine Liste mit 0-element, so dass, wenn Sie versuchen, dienew_lits[1] = ..
es gibt einen index Fehler, weil es keine index 1 in der Liste, im Grundenew_lits[1] = ..
ändern Sie den Wert des index mit dem neuen Wert nicht hinzufügen. hoffe, dass dies Sinn machen 🙂Es ist nicht zu Versagen ", da Sie ändern die Liste, die Sie Durchlaufen, auf"; das ist nur ein Problem, wenn Sie Elemente hinzufügen oder entfernen aus der Liste. Es ist zu scheitern, weil jeder swap funktioniert auf zwei Orte (das - Element und sein Zwilling), so dass durch die Zeit, die Sie verarbeiten die ganze Liste, die Sie betrieben haben, die auf jedes Element zweimal tauschen, dann tauschen Sie es zurück. Also jedes Element endet, wo es begann.
InformationsquelleAutor mouad
InformationsquelleAutor BlueRaja - Danny Pflughoeft
Durch die Zeit sind Sie auf halbem Weg durch die Liste, haben Sie vertauscht alle Elemente; als Sie weiter durch die zweite Hälfte, Sie tauschen, Sie alle wieder an Ihren ursprünglichen Standorten wieder.
Stattdessen versuchen
Dies kann auf zwei Arten verwendet werden:
InformationsquelleAutor Hugh Bothwell
eine einfache Möglichkeit in python (ohne Verwendung der reverse-Funktion) ist mit der [] - Zugriff-operator mit negativen Werten, wie (drucken und erstellen Sie eine neue Liste in umgekehrter Reihenfolge):
die Funktion wäre:
InformationsquelleAutor tiagoboldt
Ich nicht die gleiche Liste, wenn ich versuche, führen Sie den code. Aber ich habe auch nicht bekommen, eine umgekehrte Liste, denn die Liste ist vorwärts durch die Liste Staat, der Wechsel vom Ende zurück. Ich denke, die Art und Weise, die Sie suchen, zu tun ist:
hier haben wir eigentlich umkehren in der Hälfte der Iterationen und wir memoize der Wert des index, wir verändern uns, so können wir die "Umkehr" im gleichen Schritt.
InformationsquelleAutor Gabriel
Dass die Umkehrung einer Zeichenkette unbekannter Länge genannt (word) und rufen Sie es (word_reversed).
Ich benutze es, zu überprüfen, um zu sehen, ob ein Wort ein Palindrom und ich bin nicht erlaubt zu verwenden .reverse-oder word[::-1].
InformationsquelleAutor Tyler G
Etwas wie dies funktionieren sollte:
InformationsquelleAutor Dolan Antenucci
Gibt es zwei Möglichkeiten, dies zu tun
Pythonic Swap:
oder
XOR-Anwendung:
InformationsquelleAutor Gagan
Wenn Sie eine Antwort in form eines code-fragment, das Sie auch ideal, sollten erklären, in den text (oder zumindest in den Kommentaren im code), wie das code-fragment löst das OPs-problem. Auch könnte es sich lohnen, zu erklären, warum dein code-fragment verwendet integer - arrays- wo, wie der OP fragt nach einer Lösung für eine Allgemeine Liste. Es ist wahrscheinlich, dass die for-Schleife arbeiten würde, für eine Allgemeine Liste, aber es ist nicht klar, warum Sie die Entscheidungen, die Sie haben.
InformationsquelleAutor prakx
Nicht auf der Suche, um eine neue Liste erstellen, halten Sie Ihre "temp" - Daten?
Seine einfache, wenn Sie einen Blick auf das Muster:
Dies bedeutet, dass die position
0 -> n
,1 -> (n - 1)
,2 -> (n - 2)
. Das bedeutet, dass Sie pop-letztes Element und legen Sie es in den aktuellen index...InformationsquelleAutor kanarelo