Python 如何检查子字符串是否是字符串列表的一部分
一般来说,字符串是一个不可变的数据结构,用于以字符串格式存储数据,可以用单引号或双引号括起来。它是不可变的,这意味着一旦创建了字符串,字符串中的数据就不能更改,但可以对字符串执行各种操作来操作数据。
子字符串是较大字符串中的连续字符序列。它是原始字符串的一部分,可以从中提取或搜索。例如,假设字符串”Hello, World!”是原始字符串,”Hello”、”World”和”!”都是原始字符串的子字符串。
在Python中,我们有不同的方法来检查子字符串是否是字符串列表的一部分。让我们详细看看每种方法。
使用循环
这种方法涉及迭代列表中的每个字符串,并检查子字符串是否存在于每个字符串中。
示例
在这个示例中,我们使用for循环遍历列表中的每个字符串。对于每个字符串,我们使用in运算符来检查子字符串是否存在。如果找到匹配项,则返回True,表示子字符串至少在一个字符串中存在。如果任何字符串中找不到匹配项,则返回False。
def is_substring_present_loop(substring, string_list):
for string in string_list:
if substring in string:
return True
return False
res = is_substring_present_loop("Happy", ["Happy","learning"])
print(res)
输出
True
使用列表推导式
列表推导式的方法允许我们创建一个新的列表,其中包含表示每个字符串中是否存在子字符串的布尔值。然后,我们可以使用any()函数来检查布尔值中是否有任何一个为True。
示例
在这个例子中,我们使用一个列表推导式来创建一个名为match_list的新列表。match_list中的每个元素表示相应字符串中是否存在子字符串。最后,我们使用any()函数来检查match_list中是否有任何一个元素为True,如果有则返回True,否则返回False。
def is_substring_present_listcomp(substring, string_list):
match_list = [substring in string for string in string_list]
return any(match_list)
res = is_substring_present_listcomp("Happy", ["Happy","learning"])
print(res)
输出
True
使用any()函数和生成器表达式
这种方法类似于列表推导式的方法,但是不会创建一个单独的列表,而是直接在any()函数中使用一个生成器表达式。
示例
在这个示例中,我们使用生成器表达式(substring in string for string in string_list),它会生成一个布尔值序列,指示子字符串是否存在于每个字符串中。any()函数检查这些布尔值中是否有任何一个为True。如果有,则返回True;否则返回False。
def is_substring_present_any(substring, string_list):
return any(substring in string for string in string_list)
res = is_substring_present_any("Tutorialspoint", ["Happy","learning"])
print(res)
输出
False