标签:http 位置 map python str 决定 tool for art
1.高阶函数2.内之高阶函数_map
map():接收两个参数,一个是函数 一个是序列
map将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列返回
#对于一个序列[-1,3,-4,-5]的每一个元素求绝对值
import random
print(list(map(abs,[-1,3,-4,-5])))
#对于每个元素求阶乘
def factoria(x):
"""对x求阶乘"""
res = 1
for i in range(1,x+1):
res = res * i
return res
li = [random.randint(2,7) for i in range(10)]
print(list(map(factoria,li)))
#将一个字符串转换成整型
from functools import reduce
def str2int(s):
def char2int(ch):
c = {str(x): x for x in range(10)}
return c[ch]
def fun(n1, n2):
return n1 * 10 + n2
return reduce(fun, map(char2int, s))
num = str2int(‘12345‘)
print(type(num), num)
3.内置高阶函数_filter
filter过滤函数
和map()类似的,也接收一个函数和一个序列
但是和map()不同的是,filter()把传入的函数依次作用于
每个元素,然后根据返回值是True或者False决定保留还是丢弃该元素
def isodd(num):
if num % 2 == 0:
return True
else:
return False
print(list(filter(isodd,range(100))))
4.匿名函数
匿名函数的关键字为 lambda,冒号前面是 形参 冒号后面是返回值 。
lambda函数能实现普通一样的功能,能传入参数,也能返回运算结果;不同的是lambda函数没有函数名,通常只有一行的表达式,函数的复杂程度也有限。
from functools import reduce
def add(x,y):
return x+y
print(reduce(add,range(10)))
print(reduce(lambda x,y:x+y,range(10)))
def mypow(x):
return x2
print(list(map(lambda x:x2,range(5))))
def isood(num):
return num%2 ==0
print(list(filter(lambda x:x%2==0,range(100))))
5.sorted( )函数
sorted( )函数是用来对可迭代对象排序的,与列表的list( )函数不同,后者是在原位置上进行排序的,排序后原列表的元素顺序会发生改变,而前者是将排序后的结构生成到一个新的列表中。
s = [‘dfs‘,‘Fds‘,‘tda‘,‘Eds‘]
print(s)
print(sorted(s))
print(sorted(s,key=str.lower))
print(sorted(s,key=str.upper,reverse=True))
info = [
(‘apple1‘,200,32),
(‘apple2‘, 40, 12),
(‘apple3‘, 1000, 23),
(‘apple1‘, 40, 2),
(‘apple1‘, 40, 5)
]
#按照商品数量进行排序
def sorted_by_count(x):
return x[1]
#按照商品价格进行排序
def sorted_by_price(x):
return x[2]
#先按照商品数量进行小-大的排序,如果商品数量一样
#则按照商品价格由小-大进行排序
def sorted_by_count_price(x):
return x[1],x[2]
print(sorted(info,key=sorted_by_count))
print(sorted(info,key=sorted_by_price))
print(sorted(info,key=sorted_by_count_price))
#假设我们用一组tuple表示学生名字和成绩,
L =[(‘Bob‘, 75), (‘Adam‘, 92), (‘Bart‘, 66),
(‘Lisa‘, 88)],按名字进行排序
标签:http 位置 map python str 决定 tool for art
原文地址:https://blog.51cto.com/12893781/2403822