使用lambda过滤字符串列表

时间:2018-11-29 07:21:20

标签: python python-3.x list lambda

我有一个类似的列表,

old_list=["a_apple","b_banana","c_cherry"]

,我想使用 lambda 获得新列表。

new_list=["apple","banana","cherry"]

我尝试过,但是没有按预期工作。这是我写的。

new_list=filter(lambda x: x.split("_")[1], old_list)

出什么问题了?

4 个答案:

答案 0 :(得分:2)

尝试一下:

Python-2

In [978]: old_list=["a_apple","b_banana","c_cherry"]

In [980]: new_list = map(lambda x: x.split("_")[1], old_list)

In [981]: new_list
Out[981]: ['apple', 'banana', 'cherry']

Python-3

In [4]: new_list = list(map(lambda x: x.split("_")[1], old_list))

In [5]: new_list
Out[5]: ['apple', 'banana', 'cherry']

答案 1 :(得分:1)

使用list comprehensions

lst=["a_apple","b_banana","c_cherry"]
[i.split("_")[1] for i in lst]

输出:

['apple', 'banana', 'cherry']

答案 2 :(得分:1)

您可以使用map函数来lambda列表:

list(map(lambda s: s.split('_')[1], old_list))

这将返回:

['apple', 'banana', 'cherry']

答案 3 :(得分:0)

使用lambda和地图:

li=["a_apple","b_banana","c_cherry"]

new_li = map(lambda x: x.split('_')[1], li)
print (list(new_li))
# ['apple', 'banana', 'cherry']