2016-11-15 91 views
0

比如我想list1的是我不能显示列表正确

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

和列表2

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

但是它打印

['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']] 

为什么它会覆盖前两个元素?

回答

0

我认为这是因为list1在循环内部并且在每次迭代时被设置为null。

我尝试这样做,它产生你正在寻找的结果:

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) 

输出:

[ 'ABC', '123', '高清', '456',' GHI”, '789']

[[ 'ABC', '123'],[ '高清', '456'],[ 'GHI', '789']]

1

回答:它正在覆盖前2个元素,因为每次执行for循环时都会通过执行list1 = []来重置它。

操作方法:这是因为list1是输入必要性,如果你想将其追加到list2它必须是新的。我建议创建一个新的变量,因为它在逻辑上不兼容,试图让list1做到这一点。我使用下面的list_entry来实现您想要附加到list2的内容。 list1将按您的意愿打印。

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) 

在进一步的说明nomenum被作为附加功能是自反和它连接到不返回任何东西的对象进行操作返回空。

0

它会被覆盖,因为每次迭代时list1都会被重置。 试试这个:

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) 

这给出了你提到的预期输出。