如何创建一个计算字符串中子字符串数量的函数?

时间:2019-10-24 08:08:38

标签: python string

定义一个名为how_many_substr_of_string(...)的函数,该函数接收两个参数,第一个参数是带有字符串的列表(将其命名为listst),第二个参数是单个字符串(将其命名为st)。该函数应返回一个数字,指示列表listst中有多少个字符串是字符串st中的子字符串

作为示例,以下代码片段:

listst = ["a","bc","dd"]
st = "abc"
res = how_many_substr_of_string(listst,st)
print (res)

应该产生输出: 2

我的代码:

def how_many_substr_of_string(listst, st):
    return listst.count(st)

我的代码不适用于以下条件和任何其他相关条件:

listst = ["a","bc","dd"]
st = "abc"
res = how_many_substr_of_string(listst,st)
print (res)

我得到的输出为0,但应该为2。如何解决此问题或编辑我的代码,使其可以在问题中所示的任何其他情况下使用

2 个答案:

答案 0 :(得分:2)

def how_many_substr_of_string(listst, st):
    return sum(1 for item in listst if item in st)

关于即使字符串被视为数组也能正常工作的注释-Python将依次使用__contains__(self, item)__iter__(self)__getitem__(self, key)来确定项目是否位于给定的字符串中

答案 1 :(得分:0)

使用此:

listst = ["a","bc","dd"]
s = "abc"
def how_many_substr(iterable, st):
    res = 0
    for i in iterable:
        if i in st: res += 1
    return res
print(how_many_substr(listst, s))

输出:

2

您的代码为:

def how_many_substr_of_string(listst, st):
    return listst.count(st)

这计算stlistst中发生的次数,即0。