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 函数来过滤掉满足以给定前缀开头的条件的值。
Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.
方法 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)]
解释
在这里,我们的函数接收两个参数:元组列表和一个前缀列表。在函数内部,我们将创建一个正则表达式,它将查找以给定前缀名称开头的模式。并进行比较,如果匹配,则将其包含到列表中并返回。
因此,我们看到了可以使用各种方法来查找包含给定前缀值的元组。