- lambda匿名函数
- map函数
map函数的表达式
map(function_to_apply, list_of_inputs)
后者是输入,前者是对输入值的应用表达。有不同种的写法
- 写法1
items = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, items))
输入就是列表里边的数值,所以lambda后边的表达式就是直接计算
- 写法2
def multiply(x):
return (x*x)
def add(x):
return (x+x)
funcs = [multiply, add]
for i in range(5):
value = map(lambda x: x(i), funcs)
print(list(value))
这里的输入是个函数的形式,所以lambda后边的表达式expression需要写成x(i),表示往函数里边传入参数i。’
3. filter函数
filter 过滤列表中的元素,并且返回一个由所有符合要求的元素所构成的列表
number_list = range(-5, 5) less_than_zero = filter(lambda x: x < 0, number_list) print(list(less_than_zero)) 输出 -5,-4,-3,-2,-1s
filter函数是一个内置函数,比for循环速度要快
4 . reduce函数
当需要对一个列表进行一些计算并返回结果时,Reduce 是个非常有用的函数,比for循环省时间
from functools import reduce
import time
AA = [1]*10000000
time1 = time.time()
product = reduce( (lambda x, y: x * y), AA)
time2 = time.time()
print(time2-time1)
AA = [1]*10000000
j = 1
time3 = time.time()
for i in range(len(AA)):
j = j*i
time4 = time.time()
print(time4-time3)
输出
0.7460358142852783
0.8257877826690674
除了乘法,其他运算也可以
想检查列表中是否包含重复的元素的三种方法:set,交集(intersection),差集(difference)
5. set函数
set(集合)是一个非常有用的数据结构。它与列表(list)的行为类似,区别在于 set 不能包含重复的值。
some_list = ['a', 'b', 'c', 'b', 'd', 'm', 'n', 'n'] duplicates = set([x for x in some_list if some_list.count(x) > 1]) print(duplicates)
- 交集intersection
valid = set(['yellow', 'red', 'blue', 'green', 'black'])
input_set = set(['red', 'brown'])
print(input_set.intersection(valid))
输出
{'red'}
- 差集difference
你可以用差集找出无效的数据,相当于用一个集合减去另一个集合的数据
valid = set(['yellow', 'red', 'blue', 'green', 'black'])
input_set = set(['red', 'brown'])
print(input_set.difference(valid))
输出
{'red'}



