为了账号安全,请及时绑定邮箱和手机立即绑定

Python初始化列表

Python初始化列表

江户川乱折腾 2019-07-10 15:49:47
Python初始化列表我打算初始化一个长度为n的列表。x = [[]] * n然而,这以某种方式将列表链接在一起。>>> x = [[]] * 3>>> x[1].append(0)>>> x[[0], [0], [0]]我希望有这样的东西:[[], [0], []]有什么想法吗?
查看完整描述

2 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

问题是它们在记忆中都是完全相同的列表。当您使用[x]*n语法,您得到的是n许多x对象,但它们都是对同一个对象的引用。它们不是不同的实例,相反,只是n引用同一个实例。

若要列出三个不同的列表,请执行以下操作:

x = [[] for i in range(3)]

这给出了三个单独的实例[],这就是你想要的

[[]]*n类似于

l = []x = []for i in range(n):
    x.append(l)

[[] for i in range(3)]类似于:

x = []for i in range(n):
    x.append([])   # appending a new list!

In [20]: x = [[]] * 4In [21]: [id(i) for i in x]Out[21]: [164363948, 164363948, 164363948, 164363948] # same id()'s 
for each list,i.e same objectIn [22]: x=[[] for i in range(4)]In [23]: [id(i) for i in x]Out[23]: [164382060, 164364140, 
164363628, 164381292] #different id(), i.e unique objects this time


查看完整回答
反对 回复 2019-07-10
?
慕神8447489

TA贡献1780条经验 获得超1个赞

创建一个包含一个空列表的列表。根据需要将空列表追加到外部列表 

查看完整回答
反对 回复 2019-07-10
  • 2 回答
  • 0 关注
  • 1046 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信