为什么这些脚本不修改所有列表?

Why these scripts don't modify all of the list?

我正在 python 中练习列表。我正在尝试将 ['a', 'n', 'a', 'c', 'o', 'n', 'd', 'a'] 中的元音字母更改为 str 'v'。我使用了 for 循环和 range,但是没有发生任何事情! 我的脚本有什么问题?

脚本一:

a = list('anaconda')
vowels = list('aeiou')
for i in a:
    if i in vowels:
        i = 'v'
print(a)

也尝试过:

a = list('anaconda')
vowels = list('aeiou')
for i in range(len(a)):
    if i in vowels:
        i = 'v'
print(a)

但是他们两个returns a没有变化:['a', 'n', 'a', 'c', 'o', 'n', 'd', 'a']!

好的,我们改一下。

首先,理解那个代码中的“i”

for i in a

只是名为“i”的变量,等于“a”列表中的值。 当你写

i = 'v' 

您只需更改变量“i”而不是“a”列表中的值。

那么您需要更改的不是“i”,而是“a”的值。

写下:

for i in range(len(a)):
   if a[i] in vowels:
      a[i] = 'v'

解决方案是使用“a[i]”来引用列表中的值。

a = list('anaconda')
vowels = list('aeiou')
for i in range(len(a)):
    if a[i] in vowels:
        a[i] = 'v'
print(a)

您正在使用索引作为值,您需要使用 `a[x] 来检查字符是否为元音(出现在给定列表中)