附加元音位置Python

时间:2016-07-21 15:38:28

标签: python indices enumerate

我想弄清楚为什么在运行此代码时我得到一个空列表。目标是获取一个字符串,找到任何元音的索引并将该索引附加到列表中。索引从1开始而不是零。任何可能发生错误的提示都会很棒!如果您有通知疏忽,请通知我。相对较新的python。谢谢

def vowel_indices(word):
    vowels = ["a", "e", "i", "o", "u"]
    vowel_idx = []
    word.lower() 
    for idx, letter in enumerate(word, start = 1):
        if letter == vowels:
            vowel_idx.append(idx) 
        return vowel_idx     

3 个答案:

答案 0 :(得分:1)

if letter == vowels:应为if letter in vowels:

元音是一个列表,一个字符串永远不能等于一个列表,你也应该将返回值移出循环,因为这会在第一次循环时停止该函数的跟踪

答案 1 :(得分:1)

方法lower不会修改字符串就地(字符串不可变),所以你应该这样做:

word = word.lower()

然后,要检查vowels列表中字符的成员资格,您应该使用in运算符,而不是==

if letter in vowels:

然后return语句不应该放在for循环中,因为这会使函数在第一次迭代后立即返回,这不是你想要的:

for idx, letter in enumerate(word, start = 1):
    if letter in vowels:
        vowel_idx.append(idx) 
return vowel_idx 

另外请注意,使用列表理解可以减少冗长并执行整个操作:

def vowel_indices(word):
    return [idx for idx, l in enumerate(word.lower(), 1) if l in vowels]

答案 2 :(得分:1)

效果很好

def vowel_indices(word):
    vowels = ["a", "e", "i", "o", "u"]
    word.lower()
    indexes = [index for c,index in zip(word,range(len(word))) if c in vowels]
    print(indexes)