鱼C论坛

 找回密码
 立即注册
查看: 1554|回复: 9

[已解决]filter函数的使用

[复制链接]
发表于 2020-7-18 15:21:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我知道filter函数可以将可迭代的对象,进行过滤
s = 'abc::'

filter(str.isalnum, s)

filter(lambda x:x.isalnum(), s)

如上面代码,传入的第一个对象都是函数,str.isalnum是什么作用呢,下面还好理解,filter将可迭代对象每个元素传入匿名函数x中,请问上面那个代码怎么理解
最佳答案
2020-7-18 15:28:49
Mikil 发表于 2020-7-18 15:26
我的疑问在于怎么str.isalnum, filter是如何将可迭代对象元素传给他的, lambda x匿名函数好理解


和 lambda 函数一样的道理,lambda 是怎么传入的 这里的 isalnum 也是一样的哈

只是这里用 lambda 写的你看的到匿名函数结构,而 isalnum 你看不到函数结构,只看的出是个函数名而已~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-18 15:23:29 | 显示全部楼层
str.isalnum 就是字符串的 isalnum 方法,这两种写法作用都是相同的:
filter(str.isalnum, s)
filter(lambda x:x.isalnum(), s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 15:23:40 | 显示全部楼层


isalnum 是字符串方法作用是:如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

这里配合 filter 用来把字符串内的字符依次进行判断过滤的

相当于此时函数就是 isalnum() 函数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 15:25:46 | 显示全部楼层
>>> str.isalnum('abcABC123')
True
>>> str.isalnum('abcABC123_')    # 下划线不是字母或数字,故返回 False
False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-18 15:26:01 | 显示全部楼层
Twilight6 发表于 2020-7-18 15:23
isalnum 是字符串方法作用是:如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则 ...

我的疑问在于怎么str.isalnum, filter是如何将可迭代对象元素传给他的, lambda x匿名函数好理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-18 15:26:54 | 显示全部楼层
zltzlt 发表于 2020-7-18 15:23
str.isalnum 就是字符串的 isalnum 方法,这两种写法作用都是相同的:

我的疑问在于怎么str.isalnum, filter是如何将可迭代对象元素传给他的, lambda x匿名函数好理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 15:27:16 | 显示全部楼层
Mikil 发表于 2020-7-18 15:26
我的疑问在于怎么str.isalnum, filter是如何将可迭代对象元素传给他的, lambda x匿名函数好理解

就是将可迭代对象 s 的每一个元素取出来放到指定的函数判断,如果返回 False 则过滤这个元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 15:27:48 | 显示全部楼层
Mikil 发表于 2020-7-18 15:26
我的疑问在于怎么str.isalnum, filter是如何将可迭代对象元素传给他的, lambda x匿名函数好理解

你看下这个例子吧:
>>> str.isalnum('abcABC123')
True
>>> str.isalnum('abcABC123_')    # 下划线不是字母或数字,故返回 False
False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-18 15:28:49 | 显示全部楼层    本楼为最佳答案   
Mikil 发表于 2020-7-18 15:26
我的疑问在于怎么str.isalnum, filter是如何将可迭代对象元素传给他的, lambda x匿名函数好理解


和 lambda 函数一样的道理,lambda 是怎么传入的 这里的 isalnum 也是一样的哈

只是这里用 lambda 写的你看的到匿名函数结构,而 isalnum 你看不到函数结构,只看的出是个函数名而已~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-7-18 15:33:53 | 显示全部楼层
zltzlt 发表于 2020-7-18 15:27
你看下这个例子吧:

很感谢你们两位的回答,幸苦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 23:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表