当一个列表到达某个项目时,如何拆分它,然后在Python中包含该项目后返回所有内容?

2024-10-02 08:22:07 发布

您现在位置:Python中文网/ 问答频道 /正文

    >>> last_phonemes(['AE1', 'B', 'S', 'IH0', 'N', 'TH'])
    ['IH0', 'N', 'TH']
    >>> last_phonemes(['IH0', 'N'])
    ['IH0', 'N']
    >>> last_phonemes(['B', 'S'])
    []

在这个程序中,我要寻找最后一个以0、1或2结尾的项,并返回该项及其后面的所有内容


Tags: 程序内容结尾lastthae1phonemesih0
3条回答

向后循环列表,并返回切片列表:

def last_phonemes(lst):
    for i in xrange(len(lst)-1, -1, -1):
        if lst[i][-1] in "012":
            return lst[i:]
    return []

如果您使用的是python3,请将xrange替换为range。你知道吗

这将从列表的末尾进行搜索,在第一次匹配时返回相应的片段(如果不匹配,则返回[]):

def last_phonemes(seq):
    for i, s in enumerate(reversed(seq), 1):
        if s.endswith(("0", "1", "2")):
            return seq[-i:]
    return []

您可以使用itertools包中的dropwhile函数。例如:

>>> from itertools import dropwhile
>>> list(dropwhile(lambda x: x != 'IH0', ['AE1', 'B', 'S', 'IH0', 'N', 'TH']))
['IH0', 'N', 'TH']
>>> list(dropwhile(lambda x: x != 'IH0', ['IH0', 'N']))
['IH0', 'N']
>>> list(dropwhile(lambda x: x != 'IH0', ['B', 'S']))
[]

相关问题 更多 >

    热门问题