首页 > 解决方案 > 我没有分配 2 年,但它是如何分配的?

问题描述

我只分配了一个 y,但它是如何在内部分配了 2 个 y 的?

x=[['', 'a', 'b'], ['', 'c', 'd']]*2
print(x)
x[0][0]='y'
print('\n')
print(x)

输出

[['', 'a', 'b'], ['', 'c', 'd'], ['', 'a', 'b'], ['', 'c', 'd']]
[['y', 'a', 'b'], ['', 'c', 'd'], ['y', 'a', 'b'], ['', 'c', 'd']]

标签: python

解决方案


您将 X 初始化为两个列表的列表。您可以在 print(x) 的输出中看到这一点。

但是,这两个列表是同一个对象。当您以如下方式创建列表时:[values]*n,它将引用同一个对象 n 次来填充您的列表。

因此,x[0] 指向 ['y', 'a', 'b'] 的两个实例。


推荐阅读