2024-10-02 08:22:07 发布
网友
>>> last_phonemes(['AE1', 'B', 'S', 'IH0', 'N', 'TH']) ['IH0', 'N', 'TH'] >>> last_phonemes(['IH0', 'N']) ['IH0', 'N'] >>> last_phonemes(['B', 'S']) []
在这个程序中,我要寻找最后一个以0、1或2结尾的项,并返回该项及其后面的所有内容
向后循环列表,并返回切片列表:
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。你知道吗
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'])) []
向后循环列表,并返回切片列表:
如果您使用的是python3,请将
xrange
替换为range
。你知道吗这将从列表的末尾进行搜索,在第一次匹配时返回相应的片段(如果不匹配,则返回
[]
):您可以使用itertools包中的dropwhile函数。例如:
相关问题 更多 >
编程相关推荐