1.函数可以赋给变量,也可以当成一个参数传到另外一个函数中
2.map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的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
决定保留还是丢弃该元素
回数是指从左向右读和从右向左读都是一样的数,例如12321
,909
。请利用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)]