美文网首页
chapter6 高阶函数

chapter6 高阶函数

作者: 木果渣 | 来源:发表于2017-12-24 22:34 被阅读0次
##map-reduce
#
print('-----map/reduce----')

def f(x):
    return x * x

r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print(list(r))

print(list(map(str, [1, 2, 3, 4, 5, 6, 7])))

from functools import reduce 
def add(x, y):
    return x + y

r = reduce(add, [1, 3, 5, 7, 9])
print(r)

def fn(x, y):
    return x * 10 + y
print(reduce(fn, [1, 3, 5, 7, 9]))

def char2num(i):
    digits = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}
    return digits[i]

def fn(x, y):
    return x * 10 + y

print('map-reduce:', reduce(fn, map(char2num, '13579')))

DIGITS = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}

def str2int(s):
    def fn(x, y):
        return x * 10 + y
    def char2num(i):
        return DIGITS[i]
    return reduce(fn, map(char2num, s))

print('str2int:', str2int('13579'))

##lambda
#我还不会写/🙂/

##练习
def normalize(name):
    return name[:1].upper()+name[1:].lower()

L1 = ['adam', 'LISA', 'barT']
L2 = list(map(normalize, L1))
print(L2)



##filter
print('-----filter-----')
def is_odd(n):
    return n % 2 == 1
print(list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9])))

def not_empty(s):
    return s and s.strip()
print(list(filter(not_empty, ['A', '', 'B', None, 'C', '  '])))

#构造一个从3开始的奇数系列
def _odd_iter():
    n = 1
    while True:
        n = n + 2
        yield n

#筛选函数   返回的是一个函数 x % 5 > 0
def _not_divisible(n):
    return lambda x: x % n > 0

#生成器,不断返回下一个素数
def primes():
    yield 2
    it = _odd_iter()
    while True:
        n = next(it)
        yield n 
        it = filter(_not_divisible(n), it)

for n in primes():
    if n < 20:
        print(n)
    else:
        break

##回数练习
def is_palindrome(n):
    s = str(n)
    for i in range(0, len(s)//2):
        if(s[i] != s[len(s) - i - 1]):
            return False
    return True

print(list(filter(is_palindrome, range(1, 1000))))


##sorted
#
print('---sorted---')

print(sorted([36, 5, -12, 9, -21]))
print(sorted([36, 5, -12, 9, -21], key = abs))

print(sorted(['bob', 'about', 'Zoo', 'Credit'], key = str.lower))
print(sorted(['bob', 'about', 'Zoo', 'Credit'], key = str.lower, reverse = True))


L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_score(l):
    return l[1]
def by_name(l):
    return l[0].lower()
print(sorted(L, key=by_score, reverse=True))
print(sorted(L, key=by_name))

相关文章

  • chapter6 高阶函数

  • python学习(三)函数式编程

    高阶函数 函数也是变量,函数参数为函数的函数,称作高阶函数 自定义高阶函数 内建高阶函数 map/reducema...

  • 11.Lambda和高阶函数(Lambda and Higher

    高阶函数 kotlin_Lambda,高阶函数 *swift_高阶函数

  • Python | 高阶函数基本应用及Decorator装饰器

    一、高阶函数 理解什么是高阶函数?以及高阶函数的基本应用方法 ▲ 高阶函数 在了解什么是高阶函数之前,我们来看几个...

  • 四、函数进阶

    一. 高阶函数 参数类型包含函数类型或返回值类型为函数类型的函数为高阶函数。 常见的高阶函数 高阶函数的调用 二....

  • Kotlin 高阶函数

    什么是高阶函数 将函数作为参数或者返回值的,称高阶函数。 定义高阶函数 action是一个高阶函数,(Int) -...

  • 高阶组件

    高阶组件 先来引入这个概念 高阶函数是什么? 高阶函数就是一个函数返回一个函数eg: 高阶组件 类同 高阶组件就是...

  • [JS函数] (Array)の高阶函数

    JS函数 高阶函数 高阶函数英文叫Higher-order function。那么什么是高阶函数? JavaScr...

  • HOC - High Order Component 高阶组件

    高阶函数 简而言之,可以接收函数作为参数的函数就是一个高阶函数。 上面的hoc函数就是一个高阶函数。 高阶组件 高...

  • Day10. 高阶组件

    1. 认识高阶函数 什么是高阶组件呢?认识高阶函数.png 高阶函数: 接收一个或多个函数作为输入, 输出一个函数...

网友评论

      本文标题:chapter6 高阶函数

      本文链接:https://www.haomeiwen.com/subject/wphkgxtx.html