📌  相关文章
📜  Python – 过滤以给定前缀开头的列表元素

📅  最后修改于: 2022-05-13 01:54:23.580000             🧑  作者: Mango

Python – 过滤以给定前缀开头的列表元素

有时,我们需要使用列表中每个字符串的第一个字符来过滤列表。这种类型的任务在日常编程甚至竞争性编程领域有很多应用。让我们讨论可以执行此任务的某些方式。

方法#1:使用列表理解+startswith()
在这个方法中,我们使用列表推导来进行遍历逻辑,并使用startswith方法过滤掉所有以特定字母开头的字符串。剩余的字符串可用于制作不同的列表。

# Python3 code to demonstrate
# Prefix Separation
# Using list comprehension + startswith()
  
# initializing list
test_list = ['sapple', 'orange', 'smango', 'grape']
  
# initializing start Prefix
start_letter = 's'
  
# printing original list
print("The original list : " + str(test_list))
  
# using list comprehension + startswith()
# Prefix Separation
with_s = [x for x in test_list if x.startswith(start_letter)]
without_s = [x for x in test_list if x not in with_s]
  
# print result
print("The list without prefix s : " + str(without_s))
print("The list with prefix s : " + str(with_s))
输出 :
The original list : ['sapple', 'orange', 'smango', 'grape']
The list without prefix s : ['orange', 'grape']
The list with prefix s : ['sapple', 'smango']

方法 #2:使用filter() + lambda + startswith()
可以使用 filter函数执行此任务,该函数在内部执行与上述函数类似的任务,而 lambda 是构建逻辑的辅助函数。

# Python3 code to demonstrate
# Prefix Separation
# Using filter() + startswith() + lambda
  
# initializing list
test_list = ['sapple', 'orange', 'smango', 'grape']
  
# initializing start Prefix
start_letter = 's'
  
# printing original list
print("The original list : " + str(test_list))
  
# using filter() + startswith() + lambda
# Prefix Separation
with_s = list(filter(lambda x: x.startswith(start_letter), test_list))
without_s = list(filter(lambda x: not x.startswith(start_letter), test_list))
  
# print result
print("The list without prefix s : " + str(without_s))
print("The list with prefix s : " + str(with_s))
输出 :
The original list : ['sapple', 'orange', 'smango', 'grape']
The list without prefix s : ['orange', 'grape']
The list with prefix s : ['sapple', 'smango']