gpt4 book ai didi

python - 在python中有一个列表,使用lambda和map/filter生成新列表

转载 作者:行者123 更新时间:2023-12-01 01:38:08 24 4
gpt4 key购买 nike

我有一个列表:

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

根据过滤器的定义,下面的代码获取正确的结果:

list(filter(lambda w: w[0]=='s',seq))

['soup','salad']

即返回仅包含以 's' 开头的单词的列表

但是如果我使用 map 函数,它会将列表返回为真/假:

list(map(lambda w: w[0]=='s',seq))`

[True, False, True, False, False]

请解释一下 map 功能。对于上面的例子

最佳答案

map 将函数应用于序列并返回生成器。

示例:

k = list(map(int,["1","2","3"]))

int() 是一个函数 string->int 因此 k 变为:

k ==  [1,2,3] # (a list of ints)

您的 lambda 是一个函数 string->bool,它接受一个 string 并评估第一个字符是否为 's':

lambda w: w[0]=='s'

作为 string->bool 的函数,当使用 list(map( lambda w: w[0]=='s', seq)) 将 lambda 应用到序列中。

<小时/>

顺便说一句。您也可以将其作为列表理解来完成:

s_seq = [x for x in seq if x[0]=='s'] # which is closer to what filter does...

这可能会让 map() 更加清晰:Understanding the map function

关于python - 在python中有一个列表,使用lambda和map/filter生成新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52190189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com