2016-03-28 17 views
1

Ich versuche einen Code auszuführen, der die Werte einer Liste um drei Punkte nach rechts verschiebt. Zum Beispiel habe ich eine Liste [1,2,3, -3,15,6,71,42] und ich möchte die Ausgabe machen [-3,15,6,71,42, 1,2,3] , aber die aktuelle Ausgabe des Programms ist [-3, 15, 6, 71, 42, 8, 8, 8]. Ich kann den Fehler nicht finden, aber der Professor möchte, dass ich NUR EINE CODE-LINIE ändere, um den Fehler zu beheben. Der Fehler darf also nicht zu schwer zu finden sein. Außer ich kann nicht scheinen, es zu finden: DVerschieben von Elementen in einer Liste (Python)

Bitte helfen Sie!

def foo1(values): 
 
    return values[0] 
 

 
def foo2(values):   
 
    for i in range(1,len(values)): 
 
     values[i-1] = values[i] 
 
     
 
def foo3(values,c): 
 
     values[len(values)-c] = len(values) 
 
    
 
def main(): 
 
    values = [1,2,3,-3,15,6,71,42] 
 
    k = 3 
 
    for r in range(k): 
 
     a = foo1(values)  
 
     foo2(values) 
 
     foo3(values,a) 
 
     
 
     
 
     
 
     
 
    print("Here is the shifted list to the left for " + str(k) + " time:") 
 
    print(values) 
 

 
    
 
main()

+0

Nein nein nein! Ich habe das Gefühl, dass ich keine Fortschritte mache, wenn ich versuche, es herauszufinden, und ich hätte gerne Hilfe! –

Antwort

4

Ändern Sie diese Zeile:

values[len(values) - c] = len(values) 

Um dies:

values[len(values) - 1] = c 

Gerade jetzt sind Sie der Wert (c) des Elements mit als Index statt "anhängen" zu der verschobenen Liste in jeder Iteration.

+0

DANKE !! Ich wusste, dass es mit dieser Linie zu tun hatte. Ich sah die Länge der Werte gleich 8 und wusste, dass ich diese Linie ändern musste. Danke für die Klärung! –

3

Ihre Lösung ist zu kompliziert - drei verschiedene Funktionen sind nicht erforderlich. Angenommen, Sie haben eine Liste data genannt, können Sie einfach tun:

for i in range(number_of_shifts): 
    data.append(data.pop(0)) 
+1

Ich denke, Code auf eine "offenere" Art und Weise zu schreiben ist besser beim Programmieren – letsc

0

Andere Lösung:

data = data[k:] + data[:k] 
Verwandte Themen