首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python列表等价

Python列表等价
EN

Stack Overflow用户
提问于 2015-11-23 00:12:25
回答 1查看 292关注 0票数 0

当我更改列表的值时,其他列表也会被更改。我不明白他们为什么这么做。

代码语言:javascript
复制
def successors(state):

    stateup=state[:]
    statedown=state[:]
    stateright=state[:]
    stateleft=state[:]


    for i in range(len(state)):
        for j in range(len(state)):
            if state[i][j]==0:
                x=i
                y=j

    stateup[x][y]=stateup[x+1][y]
    stateup[x+1][y]=0
    statedown[x][y]=statedown[x-1][y]
    statedown[x-1][y]=0
    stateright[x][y]=stateright[x][y-1]
    stateright[x][y-1]=0
    stateleft[x][y]=stateleft[x][y+1]
    stateleft[x][y+1]=0
    if x==0:
        if y==0:
            return [stateleft,stateup]
        elif y==len(state)-1:
            return [stateright,stateup]
        else:
            return [stateright,stateleft,stateup]
    elif x==len(state)-1:
        if y==0:
            return [stateleft,statedown]
        elif y==len(state)-1:
            return [stateright,statedown]
        else:
            return [stateright,stateleft,statedown]
    else:
        return [stateright,stateleft,statedown,stateup]

print successors([[1,2,3,4],[5,6,0,8],[9,10,11,12],[13,14,15,16]])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 00:16:26

您定义的变量stateup statedown ...都是state的浅拷贝。因为您使用了[:],它生成列表的浅表副本。所以改变其中一个会改变所有的人。您需要使用copy.deepcopy(...)深入复制它们。如需详细解释,请阅读此问题Deep copy a list in Python

这篇文章是copy.php

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33861894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档