map()函数和filter()函数迭代对象适用什么样的运算
0.>>> # 下面代码相当于
>>> list(map(max, , , ))
为啥max可以这么相当于,而不是
1.
>>> mapped = map(ord, "FishC")
为什么相当于就可以
为什么map(len,'sdda','sdd')仅适用于一个对象
2.
>>> list(map(sorted,[,,]))
[, , ]
为什么是sorted(),不是sorted(1,5,8)
3.
>>> list(map(len,['123','ddd']))
>>> list(map(sum,[,]))
>>> list(map(sum,,))
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
list(map(sum,,))
TypeError: 'int' object is not iterable
>>> list(map(sum,[]))
为什么要加两层[[]],才可以
现在特别蒙的一个状态,可能没有说明白问题,总结就是map()和filter()匹配什么样的运算函数,和运算函数的匹配规则是什么,希望各位前辈指点迷津{:7_119:} 本帖最后由 ba21 于 2022-3-18 23:12 编辑
很容易理解的问题你把他复杂化了。
参数
function -- 函数
iterable -- 一个或多个序列 (你不懂什么是序列?那我用列表来形容就是 一个或多个列表)
list(map(sorted,[,,]))# 1个列表
传入列表中的每个元素到参数:
shorted()
shorted()
shorted()
list(map(max, , , ))# 多个列表
传入多个列表中的每个元素到参数(也就是说多个列表的话从每个中1个1个的取):
max(1,2,0)
max(3,2,3)
仔细把函数用法看懂:
https://www.runoob.com/python/python-func-map.html ba21 发表于 2022-3-18 23:07
很容易理解的问题你把他复杂化了。
参数
>>> list(filter(max, , , ))
Traceback (most recent call last):
File "<pyshell#55>", line 1, in <module>
list(filter(max, , , ))
TypeError: filter expected 2 arguments, got 4
>>> list(filter(pow, , ))
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
list(filter(pow, , ))
TypeError: filter expected 2 arguments, got 3
请问前辈filter()是不是无法进行都多列表的运算? 本帖最后由 傻眼貓咪 于 2022-3-19 09:55 编辑
大哥,filter 接受 2 个参数,而你的代码明显有 3、4、5 ...个参数。
第一个参数为函数/方法,用于返回布尔值才是真正有意义,而你用的是 max 或 pow 返回只要不是 0 就是 true,以你代码为例,基本全输出不变(无意义)
你的代码:list(filter(max, , , ))
正确写法:list(filter(max, (, , ))) 但无意义
** 我猜你想要的应该是 map() 而不是 filter()
你可以试试:list(filter(lambda x: all(i%2 for i in x), (, , )))
意思是只要数组里的全部元素都是奇数 ba21 发表于 2022-3-18 23:07
很容易理解的问题你把他复杂化了。
参数
感谢前辈提供的帮助,感谢前辈提供的网站,我会好好研究里面的含义,祝您万事顺意 傻眼貓咪 发表于 2022-3-19 09:51
大哥,filter 接受 2 个参数,而你的代码明显有 3、4、5 ...个参数。
第一个参数为函数/方法,用于返回 ...
老铁没毛病!
页:
[1]