feyafeya 2021-12-16 08:32 采纳率: 93.3%
浏览 25
已结题

filter 后面过滤的内容,求解

我知道这过滤的内容的重复字母,我知道用的是filter这个过滤函数,但是我看不懂这个函数是怎么定义的,尤其是i后面的感叹号是什么?set(i)是什么?lambda是什么?我怎么去学习它们,有相关的内置查询字典吗?

python
a = ['abdc','sss','ww','dlkf','adf','eef']
b = list(filter(lambda i:len(set(i)) >= len(list(i)),a))       # 过滤不符合条件的元素,返回值为符合条件的元素
print(b)

运行结果: ['abdc', 'dlkf', 'adf']

  • 写回答

2条回答 默认 最新

  • chuifengde 2021-12-16 08:46
    关注

    filter(函数,序列),只过滤掉序列中每一个元素经函数处理后为False的元素
    本题函数为匿名函数 lambda ,i是它的参数,也就是序列a中的每个元素
    set(i)就是将元素转成集合,说白了就是去掉重复,
    len(set(i))>=len(list(i)) 意思是将a中的元素去掉重复后的长度与原长度比较,>=后面的肯定是没有重复的,有重复的结果肯定是False,所以最后把有重复字母的都过滤了。
    根据上面的意思,可以简化一下:
    b = list(filter(lambda i:len(set(i)) == len(i),a))

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月24日
  • 已采纳回答 12月16日
  • 创建了问题 12月16日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助