HOWTO · Python

Python 检查列表是否包含字符串

本教程演示如何获取 Python 列表中字符串的所有值

本页内容

字符串是一个字符序列。就像字符串在特定位置存储字符一样,我们可以使用列表来存储字符串的集合。

在本教程中,我们将在 Python 列表中获取具有特定值的字符串。

使用 for 循环检查 Python 列表中的特定字符串

for 用于在 Python 中迭代一个序列。

其获取包含特定值的字符串的实现如下例所示。

py_list = ["a-1", "b-2", "c-3", "a-4"]
new_list = []
for x in py_list:
    if "a" in x:
        new_list.append(x)
print(new_list)

输出:

['a-1','a-4']

在上面的代码中,在 for 循环中使用了 if 语句来搜索列表 py_list 中包含 a 的字符串。创建另一个名为 new_list 的列表来存储这些特定字符串。

使用列表推导式检查 Python 列表中的特定字符串

列表推导式是一种基于现有列表创建新列表的方法。它提供了更短的语法,比用于创建列表的其他函数和循环更紧凑、更快。

例如,

py_list = ["a-1", "b-2", "c-3", "a-4"]
r = [s for s in py_list if "a" in s]
print(r)

输出:

['a-1', 'a-4']

在上面的代码中,列表推导用于在列表 py_list 中搜索具有 a 的字符串。

请注意,使用其他函数或循环编写相同的代码会花费更多时间,因为它们的实现需要更多代码,但列表推导式解决了这个问题。

我们还可以使用列表推导来找出包含多个特定值的字符串,即,我们可以通过组合两个推导在 py_list 中找到包含 a 和 b 的字符串。

例如,

py_list = ["a-1", "b-2", "c-3", "a-4", "b-8"]
q = ["a", "b"]
r = [s for s in py_list if any(xs in s for xs in q)]
print(r)

输出:

['a-1', 'b-2', 'a-4','b-8']

使用 filter() 函数获取 Python 列表中的特定字符串

filter() 函数在检查每个元素是否满足某些条件的函数的帮助下过滤给定的可迭代对象。

它返回一个迭代器,该迭代器对可迭代对象中的每个元素进行检查。

例如,

py_lst = ["a-1", "b-2", "c-3", "a-4"]
filter(lambda x: "a" in x, py_lst)
print(filter(lambda x: "a" in x, py_lst))

输出:

<filter object at 0x7fd36c1905e0>

请注意,上面的输出是一个过滤器迭代器类型对象,因为 filter() 函数返回一个迭代器而不是一个列表。

我们可以使用 list() 函数(如下面的代码所示)来获取列表。

list(filter(lambda x: "a" in x, py_lst))

输出:

['a-1','a-4']

在上面的代码中,我们使用 filter() 在列表 py_list 中查找具有特定值的字符串。