擅长:python、mysql、java
<p>问题是您正在更改从迭代器获取的项,而<strong>该项是一个字符串,它是一个不可变的对象。当你对一个字符串调用一个方法时,它不会改变,而是返回一个新的字符串。</strong></p>
<p>当您运行<code>for item in items</code>时,您基本上调用的是<code>items.__iter__()</code>,它相当于<code>iter(items)</code>,这将为您提供列表中每个元素的副本。你知道吗</p>
<p>有几种方法可以解决这个问题,其中一种方法是创建一个新的列表并附加修改过的项。另一个解决方案是使用一个更具Python意味的列表理解:</p>
<pre><code>names = [name.lower().replace(' ', '_') for name in names]
</code></pre>
<p>也可以使用索引替换列表中的值,使用索引的方式如下:</p>
<pre><code>for i, name in enumerate(names):
names[i] = name.lower().replace(' ','_')
</code></pre>