gpt4 book ai didi

Python for 循环没有遍历所有项目

转载 作者:行者123 更新时间:2023-12-05 01:01:30 24 4
gpt4 key购买 nike

我正在编写一个从单词中删除所有元音的函数。它看起来像这样:

def remove_vowels(word):

vowels = ['a', 'e', 'i', 'o', 'u']

word = list(word)

for letter in word:
print('Looking for letter {}'.format(letter))

if letter.lower() in vowels:
try:
word.remove(letter)
except ValueError:
pass

return ''.join(word)

我希望它遍历单词中的所有字母,检查每个字母是否在元音数组中,如果是,则将其删除。

但是,它似乎并不检查所有字母。例如,对于以下调用:

print(remove_vowels('perception'))

我得到以下输出:

Looking for letter p
Looking for letter e
Looking for letter c
Looking for letter e
Looking for letter t
Looking for letter i
Looking for letter n
prcpton

由于某种原因,它跳过了 r、第二个 po。我用其他词得到了类似的结果。为什么会这样?

最佳答案

它之前不起作用的原因是在你的 for 循环期间你正在改变 word 这意味着每当你删除某些东西时它都会跳过迭代,因为删除导致每个字母向上移动一个位置。这意味着如果在位置 2 有删除,那么下一个项目现在位于位置 2,而它之后的项目位于位置 3,即下一次迭代所在的位置。

def remove_vowels(word):

vowels = ['a', 'e', 'i', 'o', 'u']

word = list(word)
print(word)
new_word = []

for letter in word:
print('Looking for letter {}'.format(letter))

if letter.lower() not in vowels:
try:
new_word.append(letter)
except ValueError:
pass

return ''.join(new_word)

print(remove_vowels('perception'))

关于Python for 循环没有遍历所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43796462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com