马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
pyhton萌新一枚,最近看到了第21讲并且正在完成课后练习。
看到第五题的代码后有点不太明白。以下为原题:
#5.
“还记得 zip 吗?使用 zip 会将两数以元祖的形式绑定在一块,例如:
list(zip([1, 3, 5, 7, 9], [2, 4, 6, 8, 10])) ------> [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
但如果我希望打包的形式是灵活多变的列表而不是元祖(希望是 [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] 这种形式),你能做到吗?(采用 map 和 lambda 表达式)“
小甲鱼给出的答案是:list(map(lambda x, y : [x, y], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
这行代码中lambda x,y后跟着的:[x,y],[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]是什么意思呢?为什么实现出来就会成为[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]?
而且我对map这个bif依然有点一知半解,希望有大神可以来解答一下
map()函数有至少两个参数,第一个参数是一个函数,经常用匿名函数lambda作为第一个参数;后面的参数是序列,序列个数由前面函数的参数决定。
例如这里的这个语句:map(lambda x, y : [x, y], [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
map有三个参数,第一个参数:lambda x, y : [x, y],后面还有两个参数是两个序列,供x和y遍历用的,即x遍历[1, 3, 5, 7, 9],,y遍历[2, 4, 6, 8, 10]。
你对匿名函数好像也不太理解。lambda x, y : [x, y],就是函数有两个参数x,y,返回值是列表[x, y]。写成函数的型式如下: def func(x,y):
return [x,y]
|