#######coding=utf-8
#######高阶函数
map()
def f(x):
return x*x
print map(f,[1,2,3,4,5])
def name(x): #将数组元素第一个元素改为大写,其他元素改为小写
return x.capitalize()
print map(name,['abs','ABC','sbs'])
reduce()
# reduce() 函数接收与map()类似,一个函数f,一个list,但行为和map()不同,reduce()传入的函数f必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值
# 利用reduce()求和
def f(x,y):
return x+y
print reduce(f,[1,2,3]) #6
#reduce()还可以接收第三个可选参数,作为计算的初始值
print reduce(f,[1,2,3,4],100) #110
#利用reduce()求和
def f(x,y):
return x*y
print reduce(f,[2,4,5,7]) #280
filter()
#filter() 该函数接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回true或false,filter()根据判断结果自动过滤不符合条件的元素,返回由符合条件元素组成的新list
def is_odd(x):
return x % 2 == 1
print filter(is_odd,[1,2,3,4,5]) #[1, 3, 5]
def is_not_empty(x):
return x and len(x.strip()) > 0 #strip()方法用于移除字符串头尾指定的字符(默认为空格)
print filter(is_not_empty, ['liu',' ',None,'hah',' ']) #['liu', 'hah']
a = ' 123'
print a.strip() #123
a = '\t\t123\r\n'
print a.strip() #123
import math
def is_square(x):
r = int(math.sqrt(x)) #math.sqrt(x)求平方根,而他返回的结果是浮点数,所以使用int接收
return r*r == x #它的平方根再等于它自身
print filter(is_square,range(1,101)) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
sorted()
#sorted() 是一个比较函数 两个待比较的元素x与y,如果x应该排在y的前面,返回-1,如果x应该排在y的后面,返回1,如果相等返回1
print sorted([1,4,2,5,9,7]) #[1, 2, 4, 5, 7, 9]
倒序
def reversed_cmp(x,y):
if x > y:
return -1
if x < y:
return 1
if x == y:
return 0
print sorted([65,9,63,5],reversed_cmp) #[65, 63, 9, 5]
#比较字符串
print sorted(['bob', 'about', 'Zoo', 'Credit']) #['Credit', 'Zoo', 'about', 'bob'] 'Zoo'排在'about'之前是因为'Z'的ASCII码比'a'小。
忽略字符串大小写比较 ['bob', 'about', 'Zoo', 'Credit']
def str(x,y): #要想比较需要先把字符串变成大写或者小写
return cmp(x.lower(),y.lower()) #lower() 方法转换字符串中所有大写字符为小写。
#cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
print sorted(['bob', 'about', 'Zoo', 'Credit'],str) #['about', 'bob', 'Credit', 'Zoo']