首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >var = [[0]*5]*5有助于理解python列表?

var = [[0]*5]*5有助于理解python列表?
EN

Stack Overflow用户
提问于 2012-02-01 08:29:44
回答 2查看 131关注 0票数 4

我偶然发现了一段python列表描述。我对它的行为有点困惑。谁能解释一下这个。感谢你的帮助。

代码语言:javascript
复制
    >>> v  = [[0]*2]*2
    >>> v
    [[0, 0], [0, 0]]
    >>> v[1][1] = 23
    >>> v
    [[0, 23], [0, 23]]
    >>> v[1][1] = 44
    >>> v
    [[0, 44], [0, 44]]
    >>>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-01 08:35:48

列表的*操作符重复它们的内容,您可以在输出中清楚地看到这一点。

但是,它不复制元素,它只复制对象引用。因此,在这种情况下,两个[0,0 ]都有相同的底层列表对象,这应该可以解释这种现象。

要验证这一点,可以尝试使用v[0] = [0,44]来分配一个新的(因此是独立的!)list对象设置为主列表的第一个元素,然后重新尝试更改v[1][1]。这一次,输出中只有一个条目会发生变化。

票数 7
EN

Stack Overflow用户

发布于 2012-02-01 08:36:59

V仅仅是一个列表列表。

第一行的*意思是“在我的列表中重复2次0”。所以每个嵌套列表的大小都是2,并且包含0。

然后,您只需为列表列表中的某些单元格设置值:)

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

https://stackoverflow.com/questions/9089124

复制
相关文章

相似问题

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