检查字符串是否包含 Python 列表中的元素

目录

Check if a string contains an element from a list in Python

  1. 检查字符串是否包含列表中的元素
  2. 检查列表中的任何元素是否包含字符串

检查字符串是否包含 Python 列表中的元素

使用该any()函数检查字符串是否包含列表中的元素。

如果字符串至少包含列表中的一个元素,则any()函数将返回,否则返回。TrueFalse

主程序
my_str = 'one two three' my_list = ['a', 'two', 'c'] if any(substring in my_str for substring in my_list): # 👇️ this runs print('The string contains at least one element from the list') else: print('The string does NOT contain any of the elements in the list')

如果您需要检查List 中的任何元素是否包含字符串,请单击以下子标题:

我们使用生成器表达式来迭代字符串集合。

生成器表达式用于对每个元素执行某些操作或选择满足条件的元素子集。

在示例中,我们遍历字符串列表并检查字符串中是否包含每个子字符串。

any函数接受一个可迭代对象作为参数,如果可迭代对象中的任何元素为真则返回。True

如果字符串至少包含列表中的一个元素,any()函数将短路返回。True

in 运算符测试成员资格。例如,如果是 的成员
,则
x in s计算为,否则计算为TruexsFalse

获取匹配的子串


如果需要获取字符串中包含的列表项,
可以使用
赋值表达式语法。

主程序
my_str = 'one two three' my_list = ['a', 'two', 'c'] if any((match := substring) in my_str for substring in my_list): # 👇️ this runs print('The string contains at least one element from the list') print(match) # 👉️ 'two' else: print('The string does NOT contain any of the elements in the list')
赋值表达式允许我们使用语法给表达式中的变量赋值NAME := expression

如果我们传递给函数的可迭代any()对象为空,或者可迭代对象中的元素都不为真,则any函数返回False

获取所有匹配的子串

如果您需要获取所有匹配的子字符串,请使用
列表理解

主程序
my_str = 'one two three' my_list = ['a', 'two', 'c', 'one'] matches = [substring for substring in my_list if substring in my_str] print(matches) # 👉️ ['two', 'one']

列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

在每次迭代中,我们检查是否在字符串中找到当前子字符串并返回结果。

新列表包含字符串中包含的所有列表元素。

以不区分大小写的方式检查

如果您需要以不区分大小写的方式检查字符串是否包含列表中的元素,请将两个字符串都转换为小写。

主程序
my_str = 'ONE TWO THREE' my_list = ['a', 'two', 'c'] if any(substring.lower() in my_str.lower() for substring in my_list): # 👇️ this runs print('The string contains at least one element from the list') else: print('The string does NOT contain any of the elements in the list')

str.lower()在检查每个列表项是否包含在字符串中之前,我们使用该方法将每个列表项和字符串转换为小写。

str.lower方法返回字符串的副本,其中所有大小写字符都转换为小写

要执行不区分大小写的比较,两个字符串都必须是小写或大写。

for使用循环检查字符串是否包含列表中的元素

您还可以使用for 循环来检查字符串是否包含列表中的元素。

主程序
my_str = 'one two three' my_list = ['a', 'two', 'c'] is_contained = False for substring in my_list: if substring in my_str: is_contained = True break print(is_contained) # 👉️ True if is_contained: # 👇️ this runs print('The string contains at least one element from the list') else: print('The string does NOT contain any of the elements in the list')

我们将is_contained变量初始化为False并使用for循环遍历字符串列表。

在每次迭代中,我们检查当前子字符串是否包含在字符串中。

如果满足条件,我们将is_contained变量设置为True并退出for循环。

检查列表中是否有任何元素包含字符串

检查列表中的任何元素是否包含字符串:

  1. 使用生成器表达式迭代列表。
  2. 使用in运算符检查字符串是否包含在每个列表项中。
  3. 如果条件至少满足一次,则该字符串包含在列表中。
主程序
my_list = ['bobby', 'hadz', 'com'] substring = 'z' result = any(substring in word for word in my_list) print(result) # 👉️ True if any(substring in word for word in my_list): # 👇️ this runs print('The substring is contained in at least one of the list items') else: print('The substring is NOT contained in any of the list items')

我们使用生成器表达式来遍历列表。

生成器表达式用于对每个元素执行某些操作或选择满足条件的元素子集。

在每次迭代中,我们检查子字符串是否包含在当前列表项中并返回结果。

主程序
my_list = ['bobby', 'hadz', 'com'] substring = 'z' result = any(substring in word for word in my_list) print(result) # 👉️ True

in 运算符测试成员资格。例如,如果是 的成员
,则
x in s计算为,否则计算为TruexsFalse

主程序
my_str = 'bobby hadz' print('bobby' in my_str) # 👉️ True print('another' in my_str) # 👉️ False
x not in s返回 的否定x in s

any函数接受一个可迭代对象作为参数,如果可迭代对象中的任何元素为真则返回。True

检查列表中是否有任何元素包含字符串,忽略大小写

如果您需要检查某个子字符串是否包含在忽略大小写的列表中的任何项目中,请将两个字符串都转换为小写。

主程序
my_list = ['BOBBY', 'HADZ', 'COM'] substring = 'z' result = any(substring.lower() in word.lower() for word in my_list) print(result) # 👉️ True if any(substring.lower() in word.lower() for word in my_list): # 👇️ this runs print('The substring is contained in at least one of the list items') else: print('The substring is NOT contained in any of the list items')

str.lower方法返回字符串的副本,其中所有大小写字符都转换为小写

该方法不会更改原始字符串,它会返回一个新字符串。字符串在 Python 中是不可变的。

我们可以通过将两个字符串都转换为小写或大写来执行不区分大小写的成员资格测试。

查找包含子串的列表项

如果您需要查找包含子字符串的列表项,请使用列表理解。

主程序
my_list = ['bobby', 'hadz', 'com'] substring = 'z' matches = [word for word in my_list if substring in word] print(matches) # 👉️ ['hadz']
列表推导用于对每个元素执行某些操作或选择满足条件的元素子集。

新列表仅包含包含子字符串的列表项。

如果您需要执行不区分大小写的成员资格测试,请将两个字符串都转换为小写。

主程序
my_list = ['bobby', 'hadz', 'com'] substring = 'Z' matches = [word for word in my_list if substring.lower() in word.lower()] print(matches) # 👉️ ['hadz']

for使用循环检查列表中的任何元素是否包含字符串

您还可以使用for循环来检查列表中的任何元素是否包含字符串。

主程序
my_list = ['bobby', 'hadz', 'com'] substring = 'z' any_element_contains = False for item in my_list: if substring in item: any_element_contains = True break print(any_element_contains) # 👉️ True if any_element_contains: # 👇️ this runs print('The substring is contained in at least one of the list items') else: print('The substring is NOT contained in any of the list items')

我们将any_element_contains变量初始化为False.

在每次迭代中,我们使用in运算符检查当前项是否包含子字符串。

如果满足条件,我们将any_element_contains变量设置为True
并退出循环。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: