Python - 字首元組記錄


在本文中,我們將瞭解使用 Python 程式語言查詢字首元組記錄的各種方法。

元組是一個不可變的類似列表的序列,其值一旦賦值就不能更改。這裡,字首元組是具有公共字首的元組集合。

元組的每個元素可以是任何資料型別,也可以是混合形式。

示例

records = [('Kalyan', 123),('Gungun', 122), ('Komal', 456), ('Isestru', 789), ('Kosal', 321)]
prefix = 'Ko'

在這裡您可以看到我們有一組記錄,其中元組成對出現,並且我們的字首是“Ko”。我們需要找到所有以字母“Ko”開頭的元組。結果將是:

輸出

[('Komal', 456), ('Kosal', 321)]

讓我們看看實現此目標的一些方法。

方法 1:使用列表推導式

使用列表推導式,我們可以建立字首元組記錄。我們將遍歷給定的元組列表,並檢查元組是否以給定的字首開頭,如果是,則收集匹配的元組。

示例

def pref_tuple(tuples, prefix):
   result = []
   for record in tuples:
      string=record[0]
      if string.startswith(prefix):
         result.append(record)
   return result

records = [('Kalyan', 123),('Gungun', 122), ('Komal', 456), ('Isestru', 789), ('Kosal', 321)]
prefix = 'Ko'
print(pref_tuple(records, prefix))

輸出

[('Komal', 456), ('Kosal', 321)]

解釋

在這個程式中,我們的函式接收一個元組列表和一個字首作為輸入。我們迭代元組列表中的每個值,對於每個元組,它將取出第一個值並檢查其字首是否以給定的字首值開頭,如果為真,則將其新增到結果列表中。

方法 2:使用 filter 和 lambda 函式

在這種方法中,我們將使用 filter 函式和 lambda 函式來過濾掉以給定字首開頭的元組。filter() 函式與 lambda 函式一起應用於元組列表中的每個元素。它返回 lambda 函式結果為真的元素,這意味著包含字首的字串將作為結果返回。

示例

def pref_tuple(tuples, prefix):
   return list(filter(lambda t: t.startswith(prefix), tuples))

records = [('Kalyan', 123),('Gungun', 122), ('Komal', 456), ('Isestru', 789), ('Kosal', 321)]
prefix = 'Ko'
result = pref_tuple(records, prefix)
print(result)

輸出

[('Komal', 456), ('Kosal', 321)]

解釋

在這個程式中,我們的函式接收一個元組列表和一個字首作為輸入。我們使用 filter() 函式和 lambda 函式來過濾掉滿足以給定字首開頭的條件的值。

方法 3:列表切片

在這種方法中,我們將提取每個元組的子字串並將其與給定的字首進行比較。使用這種方法,我們可以提取包含給定字首值的元組。

示例

def pref_tuple(tuples, prefix):
   return [t for t in tuples if t[0:len(prefix)] == prefix]

records = [('Kalyan', 123),('Gungun', 122), ('Komal', 456), ('Isestru', 789), ('Kosal', 321)]
prefix = 'Ko'
print(pref_tuple(records, prefix))  

輸出

[]

解釋

在上面的程式中,我們的函式接收兩個引數:元組列表和一個字首字串。我們遍歷字串,並使用切片 t[0:len(prefix)] 的概念與字首進行比較。

方法 4:正則表示式

對於任何模式匹配操作,這是一種非常有效的方法。這允許我們查詢複雜或長字串的模式或字首。

示例

def pref_tuple(tuples, prefix):
   pattern = f'^{prefix}'
   return [t for t in tuples if re.match(pattern, t)]

records = [('Kalyan', 123),('Gungun', 122), ('Komal', 456), ('Isestru', 789), ('Kosal', 321)]
prefix = 'Ko'
print(pref_tuple(records, prefix))  

輸出

[('Komal', 456), ('Kosal', 321)]

解釋

在這裡,我們的函式接收兩個引數:元組列表和一個字首列表。在函式內部,我們將建立一個正則表示式,它將查詢以給定字首名稱開頭的模式。並進行比較,如果匹配,則將其包含到列表中並返回。

因此,我們看到了可以使用各種方法來查詢包含給定字首值的元組。

更新於:2023年10月13日

130 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始
廣告