相关疑难解决方法(0)

嵌套列表索引

我在Python中使用嵌套列表时遇到了一些问题.

基本上,我有一个包含所有0值的2D列表,我想在循环中更新列表值.

但是,Python不会产生我想要的结果.有什么我误解range()和Python列表索引?

some_list = 4 * [(4 * [0])]
for i in range(3):
    for j in range(3):
        some_list[i+1][j+1] = 1
for i in range(4):
    print(some_list[i])
Run Code Online (Sandbox Code Playgroud)

我期望的结果是:

[0, 0, 0, 0]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)

但是Python的实际结果是:

[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]
[0, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

python python-3.x

11
推荐指数
2
解决办法
4112
查看次数

为什么我不能在Python中只更改嵌套列表中的单个元素

我刚刚遇到了一些非常奇怪的Python:

>>> out=[[0]*3]*3
>>> out
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> out[0][1]
0
>>> out[0][1]=9
>>> out
[[0, 9, 0], [0, 9, 0], [0, 9, 0]]
Run Code Online (Sandbox Code Playgroud)

好吧,显然,我想要的是:

[[0, 9, 0], [0, 0, 0], [0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

不奇怪吗?我对Python不是很熟悉,但Python总是以其直观的行为给我留下深刻的印象.但它是如何产生的呢?
......我怎样才能得到我需要的东西?

谢谢!

python nested-lists

4
推荐指数
2
解决办法
1370
查看次数

标签 统计

python ×2

nested-lists ×1

python-3.x ×1