返回包含最后一个元音音素和后续辅音音素的列表

时间:2015-04-01 23:58:40

标签: python python-3.x

所以我正在研究这个问题

元音音素是最后一个字符为0,1或2的音素。例如,单词BEFORE(B IH0 F AO1 R)包含两个元音音素,单词GAP(G AE1 P)有一个。

该参数代表音素列表。该功能是返回一个列表,其中包含给定音素列表中的最后一个元音音素和随后的辅音音素。如果音素列表不包含元音音素,则返回空列表。

1 个答案:

答案 0 :(得分:4)

def last_phonemes(phoneme_list):
    """ (list of str) -> list of str

    Return the last vowel phoneme and subsequent consonant phoneme(s) in
    phoneme_list.

    >>> last_phonemes(['AE1', 'B', 'S', 'IH0', 'N', 'TH'])
    ['IH0', 'N', 'TH']
    >>> last_phonemes(['IH0', 'N'])
    ['IH0', 'N']
    >>> last_phonemes(['B', 'S'])
    []
    """
    for i, phoneme in reversed(list(enumerate(phoneme_list))):
        if phoneme[-1] in '012':
            return phoneme_list[i:]
    return []

编辑解释

您希望以reversed顺序遍历phoneme_list。当您找到包含“0”字符的第一个项目时,您希望切片原始列表(您的代码中有切片部分)。您将需要索引来进行切片,因此在转换之前,您需要enumerate phoneme_list。