在 Python 中使用 for 循环遍历列表时,用户可能会遇到意外的情况,即无法在不使用列表推导式的情况下更改其元素。
问题的症结在于for i in li 循环结构的行为。在内部,它按如下方式迭代:
for idx in range(len(li)): i = li[idx] i = 'foo'
如所见, i 最初被分配了对列表中元素的引用。对 i 的任何后续修改只会影响局部变量,而不影响列表项本身。
要解决此问题,可以利用列表推导式:
li = ["foo" for i in li]
或者,显式遍历索引:
for idx in range(len(li)): li[idx] = 'foo'
或者,枚举可以是用于简化流程:
for idx, item in enumerate(li): li[idx] = 'foo'
以上是为什么我不能直接在'for”循环中修改 Python 列表?的详细内容。更多信息请关注PHP中文网其他相关文章!