如何使用 Python 過濾以給定字首開頭的列表元素?


字首一詞由單詞或字母的開頭定義。在本文中,我們將學習如何使用 Python 內建函式,如 startswith()、filter()、lambda 和 len(),來使用 Python 過濾以給定字首開頭的列表元素。

讓我們舉個例子來理解這一點 -

Let’s take an example to understand this:
Given element list, My_list = [“Amelia”,  “Kinshuk”,  “Rosy”,  “Aman”]
Keyword to be searched, Prefix = “Am”
Final result = [“Amelia”, “Aman”]

語法

以下語法用於所有示例 -

startswith()

這是 Python 中的一個內建方法,如果字串以特定值開頭,則在滿足給定條件時返回 true。

filter()

當我們需要根據特定條件過濾專案時,會應用 filter() 方法。簡單來說,它允許使用者迭代那些被提取以滿足條件的元素。

lambda

Python 中的這個 lambda 函式被稱為匿名函式。當需要函式物件時可以使用它。

len()

這是 Python 中的一個內建方法,它返回物件中存在的專案的長度。

使用列表推導式

該程式使用列表推導式,藉助名為 startswith() 的方法,該方法可用於從列表中過濾字首元素。

示例

在下面的示例中,我們將使用列表推導式在名為 prefix_list_element_filter() 的函式的 return 語句中,該函式將使用 for 迴圈迭代列表值,並使用 startswith() 檢查字首。for 迴圈和 if 語句在一個地方的組合稱為列表推導式。然後在變數 my_list 中建立列表。繼續設定呼叫函式,該函式傳遞引數 - my_list(儲存列表值)和 Am(字首)以處理以給定字首開頭的列表元素的過濾。最後,我們使用變數 filter_list 列印結果。

def prefix_list_element_filter(lst, prefix):
   return [item for item in lst if item.startswith(prefix)]

# Create the list
my_list = ["Amar", "Bunny", "Aman", "Ganesh", "Rajendra"]
filter_list = prefix_list_element_filter(my_list, "Am")
print("The given element start with prefix:", filter_list)

輸出

 The given element start with prefix: ['Amar', 'Aman']

使用 for 迴圈

該程式使用 for 迴圈迭代給定的列表,並使用 startswith() 檢查字首。然後它將使用一個空列表,該列表透過使用名為 append() 的內建方法儲存過濾後的字首元素。

示例

在下面的示例中,我們將首先使用 def 關鍵字定義函式來啟動程式,該函式接受兩個引數 - lst(接收列表值)和 prefix(接收字首關鍵字)。接下來,它將使用 for 迴圈迭代列表,然後使用 startswith() 設定字首,該字首接受引數 prefix(從函式接收的值)。然後使用名為 append() 的方法,該方法將過濾後的列表元素新增到變數 filtered_list 中並返回以獲取結果。現在在變數 fruit_list 中建立列表。然後使用呼叫函式將列表值和字首的引數傳遞到變數 filter_list 中。最後,使用名為 filter_list 的變數列印結果。

def prefix_list_element_filter(lst, prefix):
   filtered_list = []
   for item in lst:
      if item.startswith(prefix):
         filtered_list.append(item)
   return filtered_list

# Create the list
fruit_list = ["apple", "banana", "avocado", "blue berry", "kiwi"]
filter_list = prefix_list_element_filter(fruit_list, "b")
print("The given element start with prefix:\n", filter_list)

輸出

 The given element start with prefix:
 ['banana', 'blue berry']

使用 Filter() 函式

該程式使用 filter() 來識別特定的字首,並使用 lambda 來使用名為 startswith() 的方法設定字首,該方法可用於過濾特定的字首。

示例

在下面的示例中,使用 def 關鍵字開始使用函式,該函式接受兩個引數 - lst(接收列表值)和 prefix(接收特定的關鍵字搜尋),該函式將根據專案是否以給定字首開頭來過濾專案列表。此函式透過使用一些內建函式(如 list()filter()lambdastartswith())返回帶有字首的結果。然後建立列表以在變數 course_list 中儲存字串值。接下來,使用函式呼叫將值 - course_list“bc” 傳遞到變數 filter_list 中。現在使用 print 函式設定名為 filter_list 的變數以獲取結果。

def prefix_list_element_filter(lst, prefix):
   return list(filter(lambda item: item.startswith(prefix), lst))

# Create the list
course_list = ["dca", "bca", "bcom", "MCA", "pgdca"]
filter_list = prefix_list_element_filter(course_list, "bc")
print("The given element start with prefix:\n", filter_list)

輸出

 The given element start with prefix:
 ['bca', 'bcom']

使用帶條件表示式的列表推導式

該程式使用一個函式,該函式返回列表推導式,並設定一些條件表示式,該表示式可用於過濾以給定字首開頭的列表元素。

示例

在下面的示例中,開始使用函式 filter_list_elements_prefix(),該函式接受兩個引數 - lst(儲存列表)和 prefix(在函式呼叫期間接收特定的字首)。此函式透過使用列表推導式返回新列表,即表示式 item[:len(prefix)] 獲取 lst 中每個專案的從開頭到字首長度的切片,並將其與字首進行比較。如果它們相等,則該專案將包含在新列表中。接下來,建立列表以在變數 my_list 中儲存一些字串值。然後初始化變數 filter_list,該變數儲存與函式(上面提到的)相同的名稱,以傳遞列表和字首的值。最後,在 print 函式中使用變數 filter_list 以獲取結果。

def filter_list_elements_prefix(lst, prefix):
   return [item for item in lst if item[:len(prefix)] == prefix]

# Create the list
my_list = ["tea", "coffee", "cheese", "teaspoon", "sugar"]
filter_list = filter_list_elements_prefix(my_list, "tea")
print("The given element start with prefix:\n", filter_list)

輸出

 The given element start with prefix:
 ['tea', 'teaspoon']

結論

我們討論了各種解決問題陳述的方法,這些方法可以過濾以給定字首開頭的元素。有一些內建函式,如 startswith()、append() 和 len(),可用於過濾字首並根據給定條件返回結果。此程式涉及現實生活中的示例,例如多個人的姓名列表,可以透過特定字首進行搜尋。

更新於: 2023年7月17日

703 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告