繁体   English   中英

在 lambda 表达式中使用 startswith 并使用 Python 过滤 function

[英]Using startswith in lambda expression and filter function with Python

我试图找到以字符“s”开头的单词。 我有一个要检查的字符串列表(seq)。

seq = ['soup','dog','salad','cat','great']

sseq = " ".join(seq)

filtered = lambda x: True if sseq.startswith('s') else False

filtered_list = filter(filtered, seq)

print('Words are:')
for a in filtered_list:
    print(a)

output 是:

Words are:
soup
dog
salad
cat
great

我在哪里看到整个列表。 如何使用 lambda 和 filter() 方法返回以“s”开头的单词? 谢谢

你的过滤器 lambda 总是只检查你加入的单词的开头,而不是你传入的字母。

filtered = lambda x: x.startswith('s')

尝试这个。

seq = ['soup','dog','salad','cat','great']
result = list(filter(lambda x: (x[0] == 's'), seq)) 
print(result)

或者

seq = ['soup','dog','salad','cat','great']
result = list(filter(lambda x: x.startswith('s'),seq))
print(result)

output

['soup', 'salad']

如果您可以不使用filter ,这是另一种优雅的方法:

filtered_list = [x for x in seq if x.startswith('s')]
print('Words are: '+ " , ".join(filtered_list))

Output:

Words are: soup , salad

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM