我试着数数以几个后缀结尾的单词的出现次数。我认为endswith可以接受iterable;不幸的是,它没有接受iterable。下面是代码片段:

s = 'like go goes likes liked liked liking likes like'
lst = s.split()
suffixes = ['s', 'es', 'ies', 'ed', 'ing']

counter = 0
prompt = 'like'
for x in lst:
    if x.startswith(prompt) and x.endswith(any(suffix for suffix in suffixes)):
         counter += 1

在执行结束时,counter的值应为4。这是显示的错误消息:
TypeError: endswith first arg must be str or a tuple of str, not bool

我怎样才能让上面的代码工作?

最佳答案

函数返回一个bool值,但是需要一个字符串或一个字符串元组。
您只需将列表转换为元组并将其传递给any

x.endswith(tuple(suffixes))

10-06 05:50