list2 = []
q = int(input("Quantos contatos deseja adicionar? "))
for i in range(q):
list1 = []
nome = list1.append(input("Nome: "))
num = list1.append(input("Número: "))
list2.append(list1)
print(list1)
print(list2)
例如,我希望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']]
为什么要覆盖前2个元素?
答案 0 :(得分:1)
答案:它会覆盖前两个元素,因为您每次都在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)
进一步说明nome
和num
返回为空,因为追加函数是自反的,并且对其附加的对象进行操作而不返回任何内容。
答案 1 :(得分: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',' def',' 456',' ghi',& #39; 789']
[[' abc',' 123'],[' def',' 456'],[' ghi& #39;,' 789']]
答案 2 :(得分: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)
这给出了你提到的预期输出。