首页 >后端开发 >Python教程 >为什么在 Python 循环中修改'i”不会改变列表的元素?

为什么在 Python 循环中修改'i”不会改变列表的元素?

Barbara Streisand
Barbara Streisand原创
2024-12-06 18:15:17300浏览

Why Doesn't Modifying `i` in a Python Loop Change the List's Elements?

了解 Python 循环中的列表修改

当尝试使用循环迭代列表时修改列表中的元素时,您可能会遇到更改似乎不持久的问题。此行为源于 Python 处理循环内分配的变量的方式。

核心问题

在 Python 中,当您在循环内分配引用循环中元素的变量时,列表(例如,对于 li 中的 i:),您不会修改列表本身,而是创建对该元素的新引用。因此,当您尝试修改 i 时,您实际上并没有更改列表中的值。

示例

考虑以下代码:

li = ["spam", "eggs"]
for i in li:
    i = "foo"

print(li)  # Output: ["spam", "eggs"]

虽然你在循环中给 i 赋值了“foo”,但是 li 的值保持不变,因为 i 没有直接引用中的元素li 而是它们的副本。

解决方案

要在循环期间修改列表元素,您有多种选择:

  1. 列表理解: 使用修改后的元素创建一个新列表,如您在示例中使用 [foo for i in li].
  2. 索引循环: 使用循环遍历列表的索引(如 for idx in range(len(li)))并将修改后的值分配给 li[ idx].
  3. Enumerate: 利用 enumerate 同时迭代索引和元素(例如,对于 idx,enumerate(li) 中的 item),允许您直接修改列表元素。

以上是为什么在 Python 循环中修改'i”不会改变列表的元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

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