Python - 前缀元组记录

pythonserver side programmingprogramming

在本文中,我们将了解使用 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)]

解释

这里我们的函数采用两个元组参数列表和一个前缀列表,在函数内部我们将创建一个正则表达式,它将查找以给定前缀名称开头的模式。并比较它是否匹配,如果匹配,则将其包含在列表中并返回。

因此,我们看到了各种方法,使用这些方法我们可以找到包含前缀作为给定前缀值的元组。


相关文章


有用资源