【问题标题】:unwanted simultaneous update of all element of list when i want to update just one当我只想更新一个时,不需要同时更新列表的所有元素
【发布时间】:2020-04-11 06:06:13
【问题描述】:

为什么当我只更新了一个时,visited 的每个元素的所有第一个元素都更改为 True。我对编程很陌生,所以如果问题很愚蠢,请原谅。提前致谢。

visited=[[False]*3]*3
print(visited)    
x=0
y=0
visited[x][y]=True
print(visited)

输出是:

[[False, False, False], [False, False, False], [False, False, False]]

[[True, False, False], [True, False, False], [True, False, False]]

【问题讨论】:

    标签: python-3.x list printing


    【解决方案1】:

    发生这种情况是因为您通过以下方式定义了列表:

    visited=[[False]*3]*3
    

    这里,列表是通过将[[False]*3] 乘3 倍生成的。也就是说,python 将 3 个元素存储在同一个内存位置(因为 3 个元素完全相同,如果我使用正确的词,则克隆)。所以当你改变一个时,所有的都会改变。

    【讨论】:

    • 你的意思是我创建了一个包含三个相同元素的列表,当一个元素更新时,所有元素都更新了?????
    • 非常感谢先生。我已经清楚地理解了这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2022-01-18
    相关资源
    最近更新 更多