python 2D列表的异常行为

时间:2018-10-25 16:24:52

标签: python-3.x

我正在尝试在python-3中创建2D列表,然后修改该列表中第一行的第一个元素。
我尝试了下面提到的代码来构建和更改值,但输出看起来很奇怪。

第一种方法

a , b = 3,3
ls = [[False]*a]*b
print(ls)
ls[0][0]=True
print(ls)

,输出为:

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

第二种方法

a , b = 3,3
ls = [[False for _ in range(a)] for _ in range(b)]
print(ls)
ls[0][0]=True
print(ls)

,输出为

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

我不明白为什么第一个方法中的ls[0][0]=True会修改所有行的第一个元素。
第一种方法中生成列表的方式是否错误?

请帮助我了解我在做错什么。

0 个答案:

没有答案