使用Python将以“S”开头的项目从列表l保存到l2

2024-10-01 13:42:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要保存列表l到l2中以“S”开头的所有列表项

l= ['Santa Cruz','Santa fe','Sumbai','Delhi']
l1 = []
l1 = list(map(lambda x : x if x[0] == 'S',l))
print(l1)

以上操作导致语法错误

我试过了 Trial-I

l= ['Santa Cruz','Santa fe','Sumbai','Delhi']
l1 = []
l1 = list(map(lambda x : x if x[0] == 'S' else '',l))
l1

它返回[真,真,真,假]

我的预期产出是['Santa Cruz'、'Santa fe'、'Sumbai']

试用II

l= ['Santa Cruz','Santa fe','Sumbai','Delhi']
l1 = []
l1 = list(map(lambda x : x[0] == 'S',l))
print(l1)

试验II返回['Santa Cruz','Santa fe','Sumbai',']

我的预期结果不应该在结尾中有空白列表项。


Tags: lambdal1map列表ifsantalistii
3条回答

如果没有lambda中的其他内容,则不能使用if。如果需要使用lambda,可以使用过滤器而不是映射:

l1=list(filter(lambda x: x[0] == 'S', l))

>>> print(l1)

['Santa Cruz', 'Santa fe', 'Sumbai']

如果要使用Map函数计算以“S”开头的单词,根据您的注释,可以执行以下操作:

result=sum(list(map(lambda x : 1 if x[0] == 'S' else 0,l)))

>>> print(result)

3

这应该能奏效

 [x for x in l if x[0] == 'S']
l= ['Santa Cruz','Santa fe','Sumbai','Delhi']
l1 = [name for name in l if name.startswith("S")]

编辑

所有字符串都有一个名为startswith的方法。使用字符串的第0个元素也可以达到目的

对于列表理解,第l1 = [name for name in l if name.startswith("S")]行中发生的事情基本上与

l= ['Santa Cruz','Santa fe','Sumbai','Delhi']
l1 = []

for name in l:
    if name.startswith("S"): # also: if name[0] == "S" would work
        l1.append(name)

但写下来的方式更为慎重

相关问题 更多 >