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--)
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--)
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.
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]
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 ;)
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]
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 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.