python学习 高阶函数/map()/reduce()/filter()/sorted()

时间:2021-03-18 18:26:37

1.函数可以赋给变量,也可以当成一个参数传到另外一个函数中


2.map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。


例子

def f (x):
return x.capitalize()

c= map(f,['adam', 'LISA', 'barT'])

print(list(c))

['Adam', 'Lisa', 'Bart']


3.reduce()理解上还不是很透彻,后面再补充

4.filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

回数是指从左向右读和从右向左读都是一样的数,例如12321909。请利用filter()滤掉非回数:

自己的例子

import math
def f(x):
x = str(x)
i = 0
#转换成list
lsit_x = "".join(x)
#的到字符串的长度
x_len = len(x) % 2
for c in lsit_x:
#得到字符串长度除于2并向下取整,然后得到list里面正序和倒序的数相等
if i <= (math.floor(len(x)/2)) and lsit_x[i] == lsit_x[-(i+1)]:
#只有当
if(i == math.floor(len(x)/2)):
return True
else:
return False
i = i+1


output = filter(f, range(1, 10000))
print(list(output))

其他人例子,回数的规律是数字反过来读和顺序读是一样的。那把他倒过来和没倒过来相等就可了。哎。懵逼了

def is_palindrome(n):
    x = n
    x = str(x)

#倒序字符串,或lsit或tuple
    x = x[::-1]
    x = int(x)
    return n == x
output = filter(is_palindrome, range(1, 10000))
print(list(output))


6.sorted排序算法

例子

请用sorted()对上述列表分别按名字排序

L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_name(t):
return t[0]
L2 = sorted(L, key=by_name)
print(L2)

再按成绩从高到低排序
def by_name1(t):
return t[1]
L2 = sorted(L, key=by_name1,reverse=True)
print(L2)

[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]
[('Adam', 92), ('Lisa', 88), ('Bob', 75), ('Bart', 66)]