1351 Stimmen

Wie kann man eine Liste umkehren?

Wie kann ich in Python rückwärts über eine Liste iterieren?

array = [0, 10, 20, 40]
for (i = array.length() - 1; i >= 0; i--)

8voto

gpj Punkte 134

Die Verwendung von reversed(array) wäre wahrscheinlich der beste Weg.

>>> array = [1,2,3,4]
>>> for item in reversed(array):
>>>     print item

Sollten Sie wissen wollen, wie Sie dies ohne den eingebauten reversed .

def reverse(a):
    midpoint = len(a)/2
    for item in a[:midpoint]:
        otherside = (len(a) - a.index(item)) - 1
        temp = a[otherside]
        a[otherside] = a[a.index(item)]
        a[a.index(item)] = temp
    return a

Dies sollte O(N) Zeit in Anspruch nehmen.

7voto

H6. Punkte 29084

Eine andere Lösung wäre die Verwendung von numpy.flip für diese

import numpy as np
array = [0, 10, 20, 40]
list(np.flip(array))
[40, 20, 10, 0]

4voto

101 Punkte 7864

Sie können auch die bitweises Komplement des Array-Index, um das Array in umgekehrter Reihenfolge zu durchlaufen:

>>> array = [0, 10, 20, 40]
>>> [array[~i] for i, _ in enumerate(array)]
[40, 20, 10, 0]

Was auch immer Sie tun, no mach es so ;)

4voto

Israel Manzo Punkte 187

Mit etwas Logik

Die Logik der alten Schule anwenden, um für Vorstellungsgespräche zu üben.

Vertauschen der Nummern von vorne nach hinten. Verwendung von zwei Zeigern index[0] and index[last]

def reverse(array):
    n = array
    first = 0
    last = len(array) - 1
    while first < last:
      holder = n[first]
      n[first] = n[last]
      n[last] = holder
      first += 1
      last -= 1
    return n

input -> [-1 ,1, 2, 3, 4, 5, 6]
output -> [6, 5, 4, 3, 2, 1, -1]

4voto

Temak Punkte 2762

Wenn Sie die Elemente der umgekehrten Liste in einer anderen Variablen speichern wollen, können Sie revArray = array[::-1] o revArray = list(reversed(array)) .

Die erste Variante ist jedoch etwas schneller:

z = range(1000000)
startTimeTic = time.time()
y = z[::-1]
print("Time: %s s" % (time.time() - startTimeTic))

f = range(1000000)
startTimeTic = time.time()
g = list(reversed(f))
print("Time: %s s" % (time.time() - startTimeTic))

Ausgabe:

Time: 0.00489711761475 s
Time: 0.00609302520752 s

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X