首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python a=[[],]*10

python a=[[],]*10
EN

Stack Overflow用户
提问于 2012-09-22 21:07:22
回答 3查看 119关注 0票数 0

可能重复: Python list confusion

当我编写一个简单的python脚本时,我定义一个新列表如下:

代码语言:javascript
运行
复制
A=[[],]*10

我想做的就是初始化一个长度为10的列表,每个元素都是一个空列表。

当我做这样的事:

代码语言:javascript
运行
复制
A[0].append(["abc",])

我只想把这个["abc",]附加到A[0],结果是A中的每个元素都附加了["abc",]

我知道这可能是由于我的初始化(A=[[],]*10)。我只想知道为什么会这样。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-22 21:11:43

您正在创建一个列表,其中包含对同一个空列表的10个引用。

您应该使用列表理解,而不是:

代码语言:javascript
运行
复制
A = [[] for _ in range(10)]

在列表理解中,您为循环中的每一次迭代创建一个新列表。如果您使用的是python 2,那么您应该使用xrange而不是range (尽管只有10个元素没有多大的区别)。

票数 2
EN

Stack Overflow用户

发布于 2012-09-22 21:09:00

表达式A=[[]]*10等效于:

代码语言:javascript
运行
复制
a = []
A = [a]*10

这意味着A包含对一个和同一个列表的10个引用。

票数 3
EN

Stack Overflow用户

发布于 2012-09-22 21:10:01

所有空列表都是对同一个对象的引用。

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

https://stackoverflow.com/questions/12547710

复制
相关文章

相似问题

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