Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中有一个列表,使用lambda和map/filter生成新列表_Python_Python 3.x_Lambda - Fatal编程技术网

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

在python中有一个列表,使用lambda和map/filter生成新列表,python,python-3.x,lambda,Python,Python 3.x,Lambda,我有一份清单: seq = ['soup','dog','salad','cat','great'] 根据过滤器的定义,下面的代码获取正确的结果: list(filter(lambda w: w[0]=='s',seq)) ['soup','salad'] i、 e返回仅包含以's' 但如果我使用的是map函数,它会将列表返回为true/false: list(map(lambda w: w[0]=='s',seq))` [True, False, True, False, False]

我有一份清单:

seq = ['soup','dog','salad','cat','great']
根据过滤器的定义,下面的代码获取正确的结果:

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

['soup','salad']
i、 e返回仅包含以
's'

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

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

[True, False, True, False, False]

请向上述示例解释map函数w.r.t.

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

例如:

k = list(map(int,["1","2","3"]))
int()
是一个函数
string->int
,因此
k
变成:

k ==  [1,2,3] # (a list of ints)
lambda是一个函数
string->bool
,它接受
字符串
,并计算第一个字符是否为
's'

lambda w: w[0]=='s'
作为
string->bool
的函数,当使用
list(map(lambda w:w[0]=='s',seq))
将lambda应用于序列时,结果是
list
bool
s


顺便说一句,你也可以这样做:

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

这可能会进一步说明
map()

很好的答案。一些我不知道但非常值得注意的事情。谢谢