首页 > 解决方案 > 使用 Python 将列表 l 中以“S”开头的项目保存到 l2

问题描述

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

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

以上导致语法错误。

我试过 试用-I

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

它返回 [True, True, True, False]

我的预期输出是 ['Santa Cruz','Santa fe','Sumbai']

试验二

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', '']

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

标签: pythonlistdictionary

解决方案


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)

但是更简洁的写法


推荐阅读