2016-11-15 3 views
0

Zum Beispiel habe ich list1Ich kann nicht die Liste korrekt anzeigen

['abc', '123', 'def', '456', 'ghi', '789'] 

und Liste 2

[['abc', '123'], ['def', '456'], ['ghi', '789']] 

sein wollen aber es

['ghi', '789'] 

[['abc', '123'], ['def', '456'], ['ghi', '789']] 

And if I put outside the range it prints 

['abc', '123', 'def', '456', 'ghi', '789'] 

[['abc', '123', 'def', '456', 'ghi', '789'], ['abc', '123', 'def', '456', 'ghi', '789'], ['abc', '123', 'def', '456', 'ghi', '789']] 

druckt Warum ist es die ersten 2 Elemente überschreiben?

Antwort

0

Ich denke es liegt daran, dass list1 innerhalb der Schleife ist und mit jeder Iteration auf null gesetzt wird.

Ich versuchte dies und es erzeugt das Ergebnis der Sie gesucht haben:

list2 = [] 

q = int(input('How many contacts would you like to add?: ')) 
list1 = [] 
    for i in range(q): 
    tempList= [] 
    name = input('Name: ') 
    number = input('Number: ') 
    tempList.append(name) 
    tempList.append(number) 
    list1.append(name) 
    list1.append(number) 
    list2.append(tempList) 

print(list1) 
print(list2) 

Ausgang:

[ 'abc', '123', 'def', '456', ' ghi‘, '789']

[[ 'abc', '123'], [ 'def', '456'] [ 'ghi', '789']]

1

Antwort: Es überschreibt die ersten beiden Elemente, weil Sie es jedes Mal in der for-Schleife zurücksetzen, indem Sie list1 = [] ausführen.

How-to: Dies ist eine Notwendigkeit gegeben, dass list1 ist ein Eingang, und wenn Sie es list2 anhängen möchten, hat es die neue sein. Ich würde vorschlagen, eine neue Variable zu erstellen, da es logisch inkompatibel ist, zu versuchen, list1 zu bekommen, beides zu tun. Ich verwende list_entry unten, um zu erreichen, was Sie an list2 anhängen möchten. list1 wird gedruckt, wie Sie möchten.

list1 = [] 
list2 = [] 
q = int(input("Quantos contatos deseja adicionar? ")) 
for i in range(q): 
    nome = input("Nome: ") 
    num = input("Número: ") 
    list1.append(nome) 
    list1.append(num) 
    list2.append([nome, num]) 

print(list1) 
print(list2) 

Auf einer weiteren Notiz nome und num kehrten leer wie die Append Funktion reflexiv ist und arbeitet auf dem Objekt, um es angebracht ist, ohne etwas zurück.

0

Es wird überschrieben, da jedes mal list1 in jeder Iteration zurückgesetzt wird. Versuchen Sie dieses:

list2 = [] 
q = int(input("Quantos contatos deseja adicionar? ")) 
list1 = [] 
for i in range(q): 
    list3 = [] 
    nome = list1.append(input("Nome: ")) 
    num = list1.append(input("Número: ")) 
    list3 = list1[(i*2):] 
    list2.append(list3) 

print(list1) 
print(list2) 

Das erwartete ergibt Ausgabe, die Sie erwähnt.

Verwandte Themen