Python 计算输入列表中以“S”开头的字数

Python 计算输入列表中以“S”开头的字数,python,list,map-function,Python,List,Map Function,我只想通过使用map函数和lambda函数来计算字数 这是我写的代码 input_list=[“圣何塞”、“旧金山”、“圣达菲”、“休斯顿”] lenlistmaplambda单词:如果单词[0]==S,则输入\u列表 然而,这是抛出这样一个错误 File "/code/source.py3", line 5 count = len(list(map(lambda word:word if word[0]=="S",input_list)))

我只想通过使用map函数和lambda函数来计算字数

这是我写的代码

input_list=[“圣何塞”、“旧金山”、“圣达菲”、“休斯顿”] lenlistmaplambda单词:如果单词[0]==S,则输入\u列表 然而,这是抛出这样一个错误

File "/code/source.py3", line 5
    count = len(list(map(lambda word:word if word[0]=="S",input_list)))
                                                         ^
SyntaxError: invalid syntax
如果您坚持使用map,那么使用sum可能会奏效:

input_list=[“圣何塞”、“旧金山”、“圣达菲”、“休斯顿”] count=summaplambda单词:单词[0]==S,输入\u列表 请注意,单词[0]==S的计算结果为True或False,与sum一起使用时,会分别转换为1或0。

如果您坚持使用map,则使用sum可能有效:

input_list=[“圣何塞”、“旧金山”、“圣达菲”、“休斯顿”] count=summaplambda单词:单词[0]==S,输入\u列表 请注意,单词[0]==S的计算结果为True或False,当与sum一起使用时,会分别转换为1或0。

或者您可以这样做 summaplambda x:x.startswithS,输入列表

,或者您可以这样做
summaplambda x:x.startswithS,input_list

您是想使用筛选器吗?不,实际上问题不允许我使用筛选器您使用的lambda不正确。word if word[0]==S需要一个else来告诉它,如果条件不为真,将返回什么,但您似乎试图将其用作列表理解中的条件。但map不适用。它用于将一个iterable转换为另一个相同长度的iterable。而filter用于从输入iterable中选择一个子集。通常的方法是len[如果单词[0]==S,则在input_列表中逐个单词]。地图和lambda都没有用。你是想使用过滤器吗?不,实际上问题不允许我使用过滤器。你使用的lambda不正确。word if word[0]==S需要一个else来告诉它,如果条件不为真,将返回什么,但您似乎试图将其用作列表理解中的条件。但map不适用。它用于将一个iterable转换为另一个相同长度的iterable。而filter用于从输入iterable中选择一个子集。通常的方法是len[如果单词[0]==S,则在input_列表中逐个单词]。map和lambda都没有用。@python\u用户:好的,是的,这是一个改进。@python\u用户:好的,是的,这是一个改进。
len([x for x in input_list if x.startswith('S')])