首页 >后端开发 >Python教程 >为什么对一个子列表的更改会影响使用'[x] * n”创建的 Python 列表中的所有子列表?

为什么对一个子列表的更改会影响使用'[x] * n”创建的 Python 列表中的所有子列表?

Linda Hamilton
Linda Hamilton原创
2025-01-05 10:59:41316浏览

Why Do Changes to One Sublist Affect All Sublists in a Python List of Lists Created Using `[x] * n`?

列表的列表:子列表之间的意外更改解释

在 Python 中,当创建列表列表时,使用 [x] * n 将结果是一个列表,其中包含对同一基础列表的多个引用。修改一个子列表中的值时,此行为可能会导致所有子列表发生意外更改。

例如,请考虑以下代码:

xs = [[1] * 4] * 3

此代码创建一个列表列表,其中每个列表sublist 引用相同的包含四个 1 的基础列表。当我们更改子列表中的某个元素时:

xs[0][0] = 5

更改会反映在所有子列表中。发生这种情况是因为原始列表列表仅具有对同一基础子列表的三个引用,而不是三个不同的子列表。

要创建具有不同值的单独子列表,您可以使用列表理解:

xs = [[1] * 4 for _ in range(3)]

在这种情况下,列表推导式为新列表列表中的每个元素创建一个包含四个 1 的新列表,从而产生三个不同的子列表。

以上是为什么对一个子列表的更改会影响使用'[x] * n”创建的 Python 列表中的所有子列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

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