|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
0.
list(map(sum,[0,1,2]))
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
list(map(sum,[0,1,2]))
TypeError: 'int' object is not iterable
请问为什么会报错,[0,1,2]不是可迭代对象么?
list(map(sum,[0,1],[1,2]))
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
list(map(sum,[0,1],[2,3]))
TypeError: 'int' object is not iterable
可以用map求[sum([0,2]),sum([1,3])]吗?
1.
list(filter(pow,[2,3,5],[5,2,3]))
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
list(filter(pow,[2,3,5],[5,2,3]))
TypeError: filter expected 2 arguments, got 3
filter()和map()的区别是在于filter是把结果中的False过滤掉,
filter返回结果为真的元素,map返回运算结果
为什么报错原因是要求期望两个参数但是返回三个?
list(filter(max,[1,2],[3,4]))
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
list(filter(max,[1,2],[3,4]))
TypeError: filter expected 2 arguments, got 3
小甲鱼说这两个函数特别重要,请求各位前辈指引,晚辈感激不尽
本帖最后由 hrpzcf 于 2022-3-19 11:01 编辑
map和filter功能、如何传参你都没理解
功能:
1)map(func, [a, b, c, d...]) --> 返回 [func(a), func(b), func(c), func(d)...] (它返回的不是列表,而是生成器,要用list函数把生成器转换为列表或者对生成器for循环等,我这里写返回列表是方便理解)
2)filter(func, [a, b, c, d...]) --> func(a), func(b), func(c), func(d)... --> 只取[a, b, c, d...]中经func调用后为True的,比如 func(b), func(c) 结果都是True,那么filter返回结果就是 [b, c](它返回的不是列表,而是迭代器,要用list函数把生成器转换为列表或者对生成器for循环等,我这里写返回列表是方便理解)
待续....
传参:
你的代码:list(filter(max, [1, 3, 5], [2, 2, 2], [3, 9, 8]))
你是想max([1, 3, 5]), max([2, 2, 2]), max([3, 9, 8])?
首先你传了max, [1, 3, 5], [2, 2, 2], [3, 9, 8] 4个参数给filter,这就是错的,filter只接受2个参数
给[1, 3, 5], [2, 2, 2], [3, 9, 8]套上一层括号不就变一个参数了吗?max, [[1, 3, 5], [2, 2, 2], [3, 9, 8]] 不就变两个参数了吗?[[1, 3, 5], [2, 2, 2], [3, 9, 8]]共3项,把每一项传给max不就分别是max([1, 3, 5]), max([2, 2, 2]), max([3, 9, 8])了吗?
filter会把[[1, 3, 5], [2, 2, 2], [3, 9, 8]] 中经过max([1, 3, 5]), max([2, 2, 2]), max([3, 9, 8])后结果是True的项选出来,max([1, 3, 5]), max([2, 2, 2]), max([3, 9, 8])结果分别是5, 2, 9,都非0,都可判定是True,所以filter选出来的项分别就是[1, 3, 5], [2, 2, 2], [3, 9, 8],结果就是[[1, 3, 5], [2, 2, 2], [3, 9, 8]]
(我不理解你想达到什么目的)
|
|