博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python学习之六】高阶函数2(map、reduce、filter、sorted)
阅读量:4628 次
发布时间:2019-06-09

本文共 1878 字,大约阅读时间需要 6 分钟。

3、filter

  filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。相当于一个过滤器作用。例如,在一个list中,删掉偶数,只保留奇数,可以这么写:

def is_odd(n):    return n % 2 == 1list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))# 结果: [1, 5, 9, 15]

  这个filter的关键在于实现一个正确的筛选函数。

  练习:回数是指从左向右读和从右向左读都是一样的数,例如12321909。请利用filter()筛选出回数。

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date    : 2018-05-24 12:51:30 4 # @Author  : Chen Jing (cjvaely@foxmail.com) 5 # @Link    : https://github.com/Cjvaely 6 # @Version : $Id$ 7  8 # 练习: 回数是指从左向右读和从右向左读都是一样的数,例如12321,909。 9 # 请利用filter()筛选出回数:10 11 12 def exchange(num):13     count = len(str(num)) - 1  # 数字位数3214 -> 412314     sum = 015     m = 016     while num != 0:17         sum = sum + (num // (10 ** count)) * \18             (10 ** m)  # sum = 3   23  123   412319         num = num % (10 ** count)  # num = 214  14  420         count = count - 1  # 2  1   021         m = m + 1  # 1  2   322     return sum23 24 25 def is_palindrome(n):26     count = len(str(n))  # 数字位数27     if count == 1:28         return True29     elif count % 2 == 0:  # 位数为偶数30         half1 = n // 10 ** (count // 2)  # 数字前半部分31         half2 = n % 10 ** (count // 2)  # 数字后半部分32         if half1 == exchange(half2):33             return True34     else:  # 位数非1 且为奇数35         half1 = n // 10 ** ((count + 1) // 2)  # 数字前半部分36         half2 = n % 10 ** ((count - 1) // 2)  # 数字后半部分37         if half1 == exchange(half2):38             return True39 40 41 # 借鉴切片: return str(n) == str(n)[::-1]42 # 测试:43 output = filter(is_palindrome, range(1, 1000))44 print('1~1000:', list(output))45 if list(filter(is_palindrome, range(1, 200))) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191]:46     print('测试成功!')47 else:48     print('测试失败!')

 

转载于:https://www.cnblogs.com/cjvae/p/9318741.html

你可能感兴趣的文章
LVS 介绍 原理
查看>>
欧拉函数
查看>>
工厂模式
查看>>
Ajax 的优势和不足
查看>>
vi 环境,跳转函数定义
查看>>
mac os x 查看网络端口情况
查看>>
springMVC入门截图
查看>>
jquery学习(3)--高级选择器
查看>>
C#获取本机IP
查看>>
从 StarCraft 2 Installer.exe 中提取种子文件
查看>>
关系连接查询
查看>>
[转]买土豆的故事
查看>>
[Angular JS教程] HeroService: getHeroes failed: undefined 问题解决方法
查看>>
HDU-4738-Caocao's Bridges(tarjan)
查看>>
查询数据库所有表、字段、触发器等
查看>>
文件解析库doctotext源码分析
查看>>
django admin组件
查看>>
SqlHelper
查看>>
ARM基础
查看>>
C# DataSet与DataTable的区别和用法
查看>>