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

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

Barbara Streisand
发布: 2024-12-06 18:15:17
原创
302 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板