几个重要的内置函数
all
有一个False就是False
any
有一个True就是True
zip
拉链
l = [1, 2, 3]
a = ['a', 'b', 'c']
for i in zip(l, a):
print(i)
filter
def is_odd(x):
return x % 2 == 1
ret = filter(is_odd, [1, 4, 6, 7, 9])
# [for i in [1, 4, 6, 7, 9] if i % 2 == 1]
print(ret)
for i in ret:
print(i)
练习:求1-100中开根号后是整数的数:
from math import sqrt
def num(x):
res = sqrt(x)
return res % 1 == 0
ret = filter(num, range(1, 101))
for i in ret:
print(i)
map
ret = map(abs,[1, -1, 2, -2])
for i in ret:
print(i)
sorted
生成新的列表,原列表不变,可以根据需求排序
例子:根据列表长度排序
l = [' ', 'sdadasd', [1, 2]]
new_l = sorted(l, key=len)
print(new_l)
匿名函数
公式:
函数名 = lambda 参数 :返回值
小例子:
add = lambda x, y: x+y
print(add(1, 2))
匿名函数与内置函数的结合
小例子:
dic = {'k1': 10, 'k2': 100, 'k3': 30}
ret = max(dic, key=lambda k: dic[k])
print(ret)
面试题
1下面程序的结果是:
d = lambda p: p*2
t = lambda p: p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print(x)
# 答案24
2现在有两元组((‘a’), (‘b’)), ((‘c’), (‘d’)) 请使用python中匿名函数生成列表[{‘a’:‘c’}, {‘b’:‘d’}]
分析:
需要使用匿名函数与zip内置函数
匿名函数常联系的内置函数max min sorted filter map
ret = zip((('a'), ('b')), (('c'), ('d')))
# def func(tup):
# return {tup[0], tup[1]}
res = map(lambda tup: {tup[0], tup[1]}, ret)
print(list(res))
3 以下代码输出结果是什么?
def multiplierss():
return [lambda x: i*x for i in range(4)]
print([m(2) for m in multiplierss()])