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)]
解釋
在這裡,我們的函式接收兩個引數:元組列表和一個字首列表。在函式內部,我們將建立一個正則表示式,它將查詢以給定字首名稱開頭的模式。並進行比較,如果匹配,則將其包含到列表中並返回。
因此,我們看到了可以使用各種方法來查詢包含給定字首值的元組。