如何使用 Python 过滤以给定前缀开头的列表元素?
术语前缀由单词或字母的开头定义。在本文中,我们将学习如何使用 Python 内置函数(如 startswith()、filter()、lambda 和 len())来过滤以给定前缀开头的列表元素。
让我们举一个例子来理解这一点 -
让我们举一个例子来理解这一点: 给定元素列表,My_list = ["Amelia", "Kinshuk", "Rosy", "Aman"] 要搜索的关键字,前缀 = "Am" 最终结果 = ["Amelia", "Aman"]
语法
所有示例中均使用以下语法 -
startswith()
这是 Python 中的内置方法,如果给定条件为真,则返回 true如果字符串以特定值开头,则满足条件。
filter()
当我们需要根据特定条件过滤项目时,将应用 filter() 方法。简单来说,它允许用户迭代提取出的满足条件的元素。
lambda
Python 中的这个 lambda 函数称为匿名函数。当需要函数对象时,可以使用它。
len()
这是 Python 中的内置方法,它返回对象中存在的项目的长度。
使用列表推导式
该程序借助名为 startswith() 的方法使用列表推导式,该方法可用于从列表中过滤前缀元素。
示例
在下面的示例中,我们将在名为 prefix_list_element_filter() 的函数的返回语句中使用列表推导式,该函数将使用 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)] # 创建列表 my_list = ["Amar", "Bunny", "Aman", "Ganesh", "Rajendra"] filter_list = prefix_list_element_filter(my_list, "Am") print("给定元素以前缀开头:", filter_list)
输出
给定元素以前缀开头:['Amar', 'Aman']
使用 for 循环
程序使用 for 循环迭代给定列表并使用 startswith() 检查前缀。然后,它将使用一个空列表,该列表通过使用名为 append() 的内置方法存储过滤器前缀元素。
示例
在下面的示例中,我们将首先通过使用 def 关键字定义函数来启动程序,该函数接受两个参数 - lst(用于接收列表值)和 prefix(用于接收前缀关键字)。接下来,它将使用 for 循环迭代到列表中,然后使用接受参数前缀(从函数接收的值)的 startswith() 设置前缀。然后使用名为 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 # 创建列表 fruit_list = ["apple", "banana", "avocado", "blue berry", "kiwi"] filter_list = prefix_list_element_filter(fruit_list, "b") print("给定元素以前缀开头:\n", filter_list)
输出
给定元素以前缀开头: ['banana', 'blue berry']
使用 Filter() 函数
程序使用 filter() 识别特定前缀,并使用 lambda 使用名为 startswith() 的方法设置前缀,该方法可用于过滤特定前缀。
示例
在下面的示例中,开始使用带有 def 关键字的函数,该关键字接受两个参数 - lst(用于接收列表值)和 prefix(用于接收特定关键字搜索),它们将根据项目是否以给定前缀开头来过滤项目列表。此函数使用一些内置函数(如 list()、filter()、lambda 和 startswith())返回带前缀的结果。然后创建列表以将字符串的值存储在变量 course_list 中。接下来,使用函数调用将值 course_list 和 "bc" 传递到变量 filter_list 中。现在使用设置名为 filter_list 的变量的打印函数来获取结果。
def prefix_list_element_filter(lst, prefix): return list(filter(lambda item: item.startswith(prefix), lst)) # 创建列表 course_list = ["dca", "bca", "bcom", "MCA", "pgdca"] filter_list = prefix_list_element_filter(course_list, "bc") print("给定元素以前缀开头:\n", filter_list)
输出
给定元素以前缀开头: ['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] # 创建列表 my_list = ["tea", "coffee", "cheese", "teaspoon", "sugar"] filter_list = filter_list_elements_prefix(my_list, "tea") print("给定元素以前缀开头:\n", filter_list)
输出
给定元素以前缀开头: ['tea', 'teaspoon']
结论
我们讨论了解决问题陈述的各种方法,即过滤以给定前缀开头的元素。有一些内置函数(如 startswith()、append() 和 len())可用于过滤前缀并根据给定条件返回结果。该程序与现实生活中的例子相关,例如要通过特定前缀搜索多个人的姓名列表。