Python过滤器功能-如果列表中的单词以特定字符开头[重复]
Posted
技术标签:
【中文标题】Python过滤器功能-如果列表中的单词以特定字符开头[重复]【英文标题】:Python filter function - if a word in a list starts with a specific character [duplicate] 【发布时间】:2019-01-26 04:36:24 【问题描述】:我的清单:
seq = ['soup','dog','salad','cat','great', 'salami']
我正在尝试创建一个仅包含起始字符为“s”的单词的新列表。
我的尝试:
def check_letter(input_list):
if input_list[0].lower() == 's':
return True
else:
return False
filtered_list = filter(check_letter, seq)
print(filtered_list)
我得到的输出是:
<filter object at 0x10e3f6f98>
我期待的是:
['soup', 'salad', 'salami']
提前致谢!
【问题讨论】:
试试这个 print(list(filtered_list)) python 3 中的过滤器返回一个生成器。您需要对其进行迭代以获取列表(或将其转换为列表...这将对其进行迭代)check_letter
的简写形式:def check_letter(word): return word[0].lower() == 's'
【参考方案1】:
它在python3中返回生成器对象,所以要么迭代它,要么使用内置列表函数获取列表:
print(list(filtered_list))
Outpot:
['soup', 'salad', 'salami']
【讨论】:
【参考方案2】:你也可以使用列表推导。
In [1]: seq = ['soup','dog','salad','cat','great', 'salami']
In [2]: out = [x for x in seq if x.lower().startswith('s')]
In [3]: out
Out[3]: ['soup', 'salad', 'salami']
【讨论】:
以上是关于Python过滤器功能-如果列表中的单词以特定字符开头[重复]的主要内容,如果未能解决你的问题,请参考以下文章
一道Python练习题引发的,一个知识点的探讨:删除列表中特定元素的几种方法