我正在尝试在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
会修改所有行的第一个元素。
第一种方法中生成列表的方式是否错误?
请帮助我了解我在做错什么。