为什么剂量Python List附加相同的东西?

时间:2018-04-17 14:19:01

标签: python list append

当我使用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)

任何人都可以向我解释一下吗? 非常感谢!

1 个答案:

答案 0 :(得分:0)

以下内容ret将其第一项分配给num并返回ret

ret=['aaa']
def generateMessage(num):
    ret[0]=num
    return (ret)

所有返回的列表都是相同的列表。您需要每次都返回一个新列表

def generateMessage(num):
    return [num]