python基础学习(五)-- 高阶函数

作者:Shine 发布于:2018-07-02 18:16:16 浏览:789次 分类:PHP

python基础学习-- 高阶函数

# Python内建了map()和reduce()函数。and so on...
# 一、map()函数接受两个参数 一个是函数 一个是iterable, map将传入的函数依次作用到序列的每一个元素,并把结果作为新的iterator返回 作用和php的array_map()类似
# 比如我们要求一个list中的每一项的平方


def f(x):
    return x * x


r = map(f, [1, 2, 3, 4, 5])

print(list(r))

# map()传入的第一个参数是f()。由于结果r是一个iterator,是一个惰性序列,因此通过list函数让他吧整个序列都计算出来并返回一个list
# 或许你会说:不需要map函数,写一个循环也可以计算出结果(我也是这么想的)


L = []
for n in [1, 2, 3, 4, 5]:
    L.append(f(n))
print(L)


# 但是从上面的代码中你可以一眼看明白"把f(x)作用到list的 每一个元素中并把结果生成为一个新的list吗" (我觉得没差别哎 不过代码确实是精简了)
# 所以 map作为高阶函数 事实上他把运算规则抽象化了 因此 我们不但可以计算简单的f(x) = x * x 还可以计算任意复杂的函数


# 二、reduce()接收的参数同map函数 作用是把结果继续和序列的下一个元素做累计计算 reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) 其作用和php的array_reduce()类似


# 三、python内建的filter函数用于过滤序列 filter()把传入的函数依次作用于每一个元素 然后根据返回值是true还是false决定是保留还是丢弃该元素

def is_odd(i):
    return i % 2 == 1


print(list(filter(is_odd, [1, 2, 3, 4, 5, 6, 7])))

# 四、python内置的sorted()函数可以用来对list进行排序

print(sorted([1, 2, 3, 4, 10, 8]))

# sorted()也是一个高阶函数 它也可以接受一个key函数来实现自定义排序 比如按绝对值大小排序

print(sorted([1, -1, 2, -3, 4, -7, 10], key=abs))

# 字符串的比较默认是按照首字母的ascii码值进行比较

# 如果需要进行反向排序,可以传入第三个参数reverse=True

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

今天学习的内容有些少。。

标签: python functions
声明:文章内容由作者原创或整理,转载请标明出处!
暂留位置!--请勿随意修改