Calmness ° 2020-11-06 12:32 采纳率: 0%
浏览 15

python自定义函数,参数是列表a,我再复制列表b=[:],改变b,a总随着b发生改变,怎么办呢?

def exstatus(curr_status):
    z = findzero(curr_status)
    ex1=[]
    ex1=curr_status[:]
    id0=id(curr_status)
    id1=id(ex1)
    m = 10000
    ex1[z[0]][z[1]],ex1[z[0] - 1][z[1]]=ex1[z[0] - 1][z[1]],ex1[z[0]][z[1]]   
    n1 = move_count(ex1)
    count=0
    if n1 < m:
        status_list.append(ex1)
        m = n1
        count+=1

就这样的函数,不知道为什么调试的时候改变ex1,surr_status也跟着发生变化,请问怎么解决呢?

  • 写回答

2条回答 默认 最新

  • 秋千Swing0_0 2020-11-07 09:22
    关注

    不应该啊,id都不同?

    你在ex1[z[0]][z[1]],ex1[z[0] - 1][z[1]]=ex1[z[0] - 1][z[1]],ex1[z[0]][z[1]]

    的后面print一下curr_status 和 ex1

    评论

报告相同问题?