首页  >  文章  >  后端开发  >  为什么 Python 中对一个嵌套列表的修改会影响其他列表?

为什么 Python 中对一个嵌套列表的修改会影响其他列表?

DDD
DDD原创
2024-11-01 05:18:02796浏览

Why Do Modifications to One Nested List Affect Others in Python?

嵌套列表索引麻烦解决

在Python中,处理嵌套列表时,了解列表的传递方式至关重要,已知作为“参考传递”。通常,变量独立保存值(“按值传递”),但出于效率原因,列表按其内存地址传递(“按引用传递”)。

例如,如果您有 4 * [0] ,您在内存中创建了四个指向相同 0 值的指针。但是,如果您修改这些列表之一,则更改会传播到所有其他列表。这是因为它们都指向相同的底层内存位置。

在您的示例中,您有 4 [(4 [0])],这意味着您创建了内部的四个副本包含四个零的列表。当您在循环中修改 some_listi 1 时,您实际上修改了该内存位置处的基础列表,从而导致所有四个列表都受到影响。

要解决此问题,请避免第二次乘法并使用循环创建新列表列表列表:

<code class="python">some_list = [(4 * [0]) for _ in range(4)]</code>

通过这样做,您可以创建四个不同的列表,每个列表包含四个零,从而防止对多个列表进行意外修改。

以上是为什么 Python 中对一个嵌套列表的修改会影响其他列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn