【问题标题】:Why these scripts don't modify all of the list?为什么这些脚本不修改所有列表?
【发布时间】:2021-12-06 08:16:23
【问题描述】:

我正在用 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)

但他们都返回 a 而没有变化:['a', 'n', 'a', 'c', 'o', 'n', 'd', 'a']

【问题讨论】:

  • 你只是分配给局部变量i;这不会以任何方式修改列表。
  • 您是在寻找修改列表的解决方案,还是寻找解释?

标签: python for-loop range


【解决方案1】:
a = list('anaconda')
vowels = list('aeiou')
for i in range(len(a)):
    if a[i] in vowels:
        a[i] = 'v'
print(a)

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

【讨论】:

    【解决方案2】:

    好的,让我们改变它。

    首先,了解该代码中的“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]”来引用列表中的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多