0

对于这段代码,我几乎拥有它,以便它返回某些索引,但它计算同一索引中的多个元音。我刚刚意识到 index() 只返回该项目的第一次出现,但现在我已经用尽了其他可能性。

def vowel_indices(s):
'string ==> list(int), return the list of indices of the vowels in s'
res = []
for vowel in s:
    if vowel in 'aeiouAEIOU':
        res = res + [s.index(vowel)]
return res

这种工作的一个例子是:

vowel_indices('你好世界')

[1, 4, 7]

相反,我最终得到 [1,4,4] 作为回报。

4

2 回答 2

4

使用列表比较enumerate

vowel_indices = [idx for idx, ch in enumerate(your_string) if ch.lower() in 'aeiou']
于 2013-02-04T00:12:02.207 回答
1

你的问题是.index()在你的元音第一次出现时停止,所以后面出现的重复元音不会被注意到。

而不是 using .index(),而是使用一个计数器变量(有点像 C++for循环):

def vowel_indices(s):
    res = []
    index = 0

    for vowel in s:
        index += 1

        if vowel.lower() in 'aeiou':
            res.append(index)

    return res

或使用enumerate()

def vowel_indices(s):
    res = []

    for index, vowel in enumerate(s):
        if vowel.lower() in 'aeiou':
            res.append(index)

    return res
于 2013-02-04T00:16:09.703 回答