|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
0.
>>> # 下面代码相当于 [max(1, 2, 0), max(3, 2, 3), max(5, 2, 9)]
>>> list(map(max, [1, 3, 5], [2, 2, 2], [0, 3, 9, 8]))
[2, 3, 9]
为啥max可以这么相当于,而不是[max(1,3,5),max(2,2,2),max(0,3,9,8)]
1.
>>> mapped = map(ord, "FishC")
为什么相当于[ord('F'),ord('i'),ord('s'),ord('h'),ord('C')]就可以
为什么map(len,'sdda','sdd')仅适用于一个对象
2.
>>> list(map(sorted,[[1,3,2],[5,4,6],[8,7,9]]))
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
为什么是sorted([1,2,3]),不是sorted(1,5,8)
3.
>>> list(map(len,['123','ddd']))
[3, 3]
>>> list(map(sum,[[1,2,3],[4,5,6]]))
[6, 15]
>>> list(map(sum,[1,2,3],[4,5,6]))
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
list(map(sum,[1,2,3],[4,5,6]))
TypeError: 'int' object is not iterable
>>> list(map(sum,[[1,2,3]]))
[6]
为什么要加两层[[]],才可以
现在特别蒙的一个状态,可能没有说明白问题,总结就是map()和filter()匹配什么样的运算函数,和运算函数的匹配规则是什么,希望各位前辈指点迷津
本帖最后由 傻眼貓咪 于 2022-3-19 09:55 编辑
大哥,filter 接受 2 个参数,而你的代码明显有 3、4、5 ...个参数。
第一个参数为函数/方法,用于返回布尔值才是真正有意义,而你用的是 max 或 pow 返回只要不是 0 就是 true,以你代码为例,基本全输出不变(无意义)
你的代码:list(filter(max, [1, 3, 5], [2, 2, 2], [3, 9, 8]))
正确写法:list(filter(max, ([1, 3, 5], [2, 2, 2], [3, 9, 8]))) 但无意义
** 我猜你想要的应该是 map() 而不是 filter()
你可以试试:list(filter(lambda x: all(i%2 for i in x), ([1, 3, 5], [2, 2, 2], [3, 9, 8])))
意思是只要数组里的全部元素都是奇数
|
|