Python之函数
本节重点理解一下map,reduce,filter,lambda,sorted函数的用法
map函数实例:
#!/usr/bin/env python
# -*- coding:utf8 -*-
# @Time : 2017/11/2 9:32
# @Author : hantong
# @File : func.py
#map函数,返回一个列表,第一个是自定义函数,第二个是可迭代对象
print('###############map###################')
lt = [1,2,3,4,5,6]
def MAP(x):
#只有一个参数
return x*x
l1 = map(MAP,lt)
print(type(l1))
print(l1)
执行结果
###############map###################
<type 'list'>
[1, 4, 9, 16, 25, 36]
reduce函数实例:
#!/usr/bin/env python # -*- coding:utf8 -*- # @Time : 2017/11/2 9:32 # @Author : hantong # @File : func.py#reduce函数,传入函数必须接收两个参数,每次把可迭代对象的两个元素参数作为函数的实参传入到函数中,
# 每次运算的结果作为第一个实参,可迭代对象的下一个元素作为另一个实参,传入函数中,以此类推
print('##############reduce#################')
def f(x,y):
#两个参数
return x+y
print(reduce(f,[1,2,3,4,5],10))
执行结果:
##############reduce#################
25
filter函数用法实例:
#!/usr/bin/env python
# -*- coding:utf8 -*-
# @Time : 2017/11/2 9:32
# @Author : hantong
# @File : func.py
#filter函数
#每次把可迭代对象的元素传入进去,如果返回为True,则保留该元素,否则不保留
print('###############filter################')
a = [1,2,3,4,5,6]
def is_odd(x):
#一个参数
return x%2 == 1
#返回值余数为1的为True则保留下来,其余舍弃
print(filter(is_odd,a))
def is_odd(x):
return x%2 == 0
#返回值余数为0的为True则保留下来,其余舍弃
print(filter(is_odd,a))
执行结果:
###############filter################
[1, 3, 5]
[2, 4, 6]
lambda匿名函数实例:
#!/usr/bin/env python
# -*- coding:utf8 -*-
# @Time : 2017/11/2 10:17
# @Author : hantong
# @File : func2.py
#匿名函数(lambda)
print('##########lambda###########')
def sum(x,y):
return x+y
m = lambda x,y:x+y
#lambda函数格式请注意
print(m(4,5))
执行结果:
##########lambda###########
9
sorted函数用法实例:
#!/usr/bin/env python
# -*- coding:utf8 -*-
# @Time : 2017/11/2 10:17
# @Author : hantong
# @File : func2.py
#sorted()函数,对字典进行排序
print('##########字典排序##########')
mm = dict(a=1,b=2,c=10,d=9,k=11,e=20,f=12,g=7)
print(mm)
for i in mm:
print i
for k ,v in mm.iteritems():
print(k,v)
print('##################')
test = sorted(mm.iteritems(),key=lambda e: e[1])
test1 = sorted(mm.iteritems(),key=lambda e: e[0])
#此处注意:key=lambda e: e[1],key=lambda是匿名函数,e: e[1]表示下标为1,比如('c',10),就表示10,而e可以自己定义,
# 比如写成d也行,当下标写成0的时候,就是以字典中k值排序
print(test)
print(test1)
执行结果:
##########字典排序##########
{'a': 1, 'c': 10, 'b': 2, 'e': 20, 'd': 9, 'g': 7, 'f': 12, 'k': 11}
a
c
b
e
d
g
f
k
('a', 1)
('c', 10)
('b', 2)
('e', 20)
('d', 9)
('g', 7)
('f', 12)
('k', 11)
##################
[('a', 1), ('b', 2), ('g', 7), ('d', 9), ('c', 10), ('k', 11), ('f', 12), ('e', 20)]
[('a', 1), ('b', 2), ('c', 10), ('d', 9), ('e', 20), ('f', 12), ('g', 7), ('k', 11)]