【发布时间】:2020-12-03 20:02:19
【问题描述】:
如果我有一个清单:
list = [1, 1, 2, 3, 4, 4, 5]
我想改变,像这样说所有 4 为“无”:
list = [1, 1, 2, 3, None, None, 5]
我知道我可以通过循环和枚举来做到这一点:
for index, item in enumerate(list):
if item == 4:
list[index] = None
但是,为什么这不起作用?
for i in range(0, len(list)):
if list[i] == 4:
list[i] = None
我知道 enumerate 方法更好并且有效,但我认为第二种方法遵循类似的逻辑,尽管迭代每个值并检查它是否是我们想要更改的值。
我只是想更好地理解两段代码的逻辑
【问题讨论】:
-
它虽然有效。我刚刚在这里测试并且工作正常。也许您应该提供一个更好的示例,或者您发现了缓存问题。您应该尝试删除 *.pyc 文件和其他与缓存相关的文件/文件夹。
-
这太奇怪了,我已经测试了好几次,但我没有得到预期的结果。会尝试找出问题,谢谢!
-
您也可以尝试使用在线翻译作为保证。只是谷歌搜索“Python 在线解释器”,我使用this one 进行测试。但我认为您遇到了缓存问题,这很常见
-
@AlexanderSantos 我刚刚发现当我单独使用它时它可以工作,但是当我想在我的实现中使用它时它只会更改第一个'4'并将第二个'4'保留为是的。
-
原来我在找到该值的所有实例之前就中断了循环。谢谢你的帮助,但我只是不傻