У меня возникает вопрос, когда я использую list.append (). В следующем коде append () добавляет одно и то же n раз, почему это могло произойти?
ret=['aaa']
def generateMessage(num):
ret[0]=num
return (ret)
outputfile=[]
for cnt in range(0,5):
# print(cnt)
tmp=generateMessage(cnt)
print("TMP is: ")
print(tmp)
outputfile.append(tmp)
print("OutputFile is: ")
print(outputfile)
print(outputfile)
На этом такой проблемы не будет:
ret=[]
def generateMessage(num):
ret=num
return (ret)
outputfile=[]
for cnt in range(0,5):
# print(cnt)
tmp=generateMessage(cnt)
print("TMP is: ")
print(tmp)
outputfile.append(tmp)
print("OutputFile is: ")
print(outputfile)
print(outputfile)
Кто-нибудь может мне это объяснить? Большое спасибо!






Следующее принимает ret, назначает свой первый элемент для num и возвращает ret:
ret=['aaa']
def generateMessage(num):
ret[0]=num
return (ret)
Все возвращенные списки - это один и тот же список. Вам нужно каждый раз возвращать новый список
def generateMessage(num):
return [num]
Но возвращаемый список каждый раз имеет новое значение. Распечатав, я нахожу, что его значение: 0,1,2,3,4
Да, но проверьте, что tmp is ret - True. Это означает, что каждый добавленный элемент является одним и тем же списком.
Спасибо, это потому, что когда я пишу ret=['aaa'], ret - это List object, а output меняется на ret
Потому что, когда программа завершается,
outputfile- это[ret, ret, ret, ret, ret], то есть[[5], [5], [5], [5], [5]].