2017-02-11 5 views
-1

Ich möchte eine Liste umkehren, aber es ist keine gewöhnliche Liste. Es hat selbst Einträge aufgelistet. Zum Beispiel:Wie kann ich die Liste unter der Liste umkehren?

[[0, 1, 2], [1, 2, 3]] 

Ich habe ein Programm gemacht und Sie können es sehen, aber es gibt mir keine korrekte Ausgabe.

def deep_reverse(L): 
    if len(L) > 1: 
     x=len(L) 
     i=0 
     for i in range(x): 
      L[i].reverse() 
    else: 
     L.reverse() 
    return L 

und nach der Ausführung es dieses Ergebnis geben:

[[2, 1, 0], [3, 2, 1]] 

jedoch dieser Ausgang ist falsch, die richtige ist:

[[3, 2, 1], [2, 1, 0]] 

Bitte ich ganz gewöhnliche Sache nur fehlt aber wie Ich bin ein Geräuschprogrammierer, deshalb habe ich nicht genug Wissen. Vielen Dank für deine Hilfe.

Bitte überprüfen Sie Ihre CODE MIT -VE ZAHLEN

+1

WAS SIND "-VE NUMMERN" –

Antwort

0

Sie sollten die Liste werden Umkehren enthält nur die Listen in allen Fällen, nicht, wenn die Bedingung len(L) > 1False ist, nur eine kurze Änderung vornehmen:

def deep_reverse(L): 
    if len(L) > 1: 
     x=len(L) 
     i=0 
     for i in range(x): 
      L[i].reverse() 
    L.reverse() 

Da diese Funktion die Liste und Unterlisten in-place, Sie brauchen nicht die return Anweisung (ändert 210 gibt None zurück).

0

elegantere Lösung mit Liste Verständnis, wo l Ihre erste Liste ist:

In [5]: list(reversed([list(reversed(x)) for x in l])) 
Out[5]: [[3, 2, 1], [2, 1, 0]] 
3

Mit Liste Verständnis:

l = [[0, 1, 2], [1, 2, 3]] 

c = [x[::-1] for x in l[::-1]] # [[3, 2, 1], [2, 1, 0]] 

Ich bin mir nicht sicher, was Sie versucht haben, aber:

l = [[1, 2], [3, -4], [-5, 6, 7]] 
c = [x[::-1] for x in l[::-1]] # [[7, 6, -5], [-4, 3], [2, 1]] 
+0

Ja, das ist gut. kurz und lakonisch. +1 – RomanPerekhrest

+0

Sehr geehrter Herr, Ihr Programm ist falsch! Überprüfen Sie einfach die angegebene Liste [[1, 2], [3, -4], [-5, 6, 7]] für diesen Eingang sollte sein [[7, 6, -5], [ 3, -4], [2, 1]] aber es gibt diesen Ausgang [[7, 6, -5], [-4, 3], [2, 1]] –

+2

Warum zweites Element ist nicht umgekehrt ?! – Arman

1

Verwendung von Listenverständnis und Indexierung:

old_list = [[0, 1, 2], [1, 2, 3]] 
# reversed(old_list) = [[1,2,3],[0,1,2]] 
new_list = [item[::-1] for item in reversed(old_list)] 
new_list 
# [[3, 2, 1], [2, 1, 0]] 
Verwandte Themen