当前位置: 首页 > 面试题库 >

无法在循环Python中修改列表元素

漆雕和雅
2023-03-14
问题内容

在Python中遍历列表时,如果没有列表理解,就无法修改元素。以供参考:

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

li
["spam", "eggs"]

li = ["foo" for i in li]
li 
["foo", "foo"]

那么,为什么不能通过Python中的循环修改元素?肯定有一些我想念的东西,但是我不知道是什么。我确定这是重复的,但是我找不到与此相关的问题,如果有链接,那就绰绰有余了。


问题答案:

因为for i in li工作方式是这样的:

for idx in range(len(li)):
    i = li[idx]
    i = 'foo'

所以如果你给i它分配任何东西都不会影响li[idx]

解决方案是您所建议的,或者遍历索引:

for idx in range(len(li)):
    li[idx] = 'foo'

或使用enumerate

for idx, item in enumerate(li):
    li[idx] = 'foo'


 类似资料:
  • 问题内容: 我正在尝试使用for循环修改列表中的项目,但出现错误(请参见下文)。样例代码: 错误: 有什么办法解决这个问题? 问题答案: 尝试以下方法: 您遇到的基本问题是,当你写的,有是一个列表,则需要是一个整数,数字索引列表。但是在循环中 是列表中的实际事物,即字符串,而不是事物的数字索引。是一个迭代器,它生成数字而不是列表中的值,因此您可以使用它。 一个替代方案是 该函数为您提供了一个在表单

  • 问题内容: 现在,我知道在迭代循环中修改列表是不安全的。但是,假设我有一个字符串列表,并且我想剥离字符串本身。可变值的替换是否算作修改? 问题答案: 它被认为是不良形式。如果需要保留对列表的现有引用,请改用列表理解和切片分配。

  • 本文向大家介绍Python 修改列表中的元素方法,包括了Python 修改列表中的元素方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇Python 修改列表中的元素方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 主要内容:修改单个元素,修改一组元素Python 提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个)。 修改单个元素 修改单个元素非常简单,直接对元素赋值即可。请看下面的例子: 运行结果: [40, 36, -26, 2, -66.2, 100, 7] 使用索引得到列表元素后,通过 赋值就改变了元素的值。 修改一组元素 Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果

  • 问题内容: 我有一个清单 我想在如下所示的for循环中删除此列表中的元素: 但这是行不通的。我能做什么? 问题答案: 使用循环遍历列表时,不允许从列表中删除元素。 重写代码的最佳方法取决于你要执行的操作。 例如,你的代码等效于: 另外,你可以使用while循环: 我正在尝试删除符合条件的项目。然后我转到下一个项目。 你可以将每个不符合条件的元素复制到第二个列表中: 或者,你可以使用filter或列

  • 问题内容: 这是有效的python行为吗?我认为最终结果应为[0,0,0],并且id()函数每次迭代应返回相同的值。如何使其成为pythonic,而不使用枚举或范围(len(bar))? 输出: 问题答案: 首先,您不能重新分配循环变量-可以,但是,这不会更改您要遍历的列表。因此,设置将不会更改列表,而只会更改局部变量(该变量恰好包含每次迭代开始时的迭代值)。 接下来,小数字(例如和)内部保存在小