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 中查詢具有特定值的字串。