怎么用evaluate求和,Evaluate函数的用法
python的一些小功能可以提高效率。通常他们在工作中往往被忽略,代码写得非常原始粗暴;写了一段时间后,发现自己的提升很少,要纠结很久才能写出一个小剧本,和那些大的太不一样了。所以要好好检讨自己,看看可以从哪些方面提升自己的技术能力。
今天,我们先来了解一下python的实用小函数:
Lamda()返回一个函数表达式,类似于def,但比def轻。不用名字add _ by _ lambda=lambdax,y: x y也可以。
printadd_by_lambda(1,1)
甚至可以直接在后面追加参数得到返回值,比如lambdax,y:x y,1,1,返回结果是2。
-
defadd(x,y):
returnx y
printadd(1,1)
zip()
定义:zip([seql,])接受一系列迭代对象作为参数,将对象中对应的元素打包成元组(tuple),然后返回由这些元组组成的列表(list)。如果传入参数的长度不同,则返回列表的长度与参数中长度最短的对象相同。
1z1=[1,2,3]
2z2=[4,5,6]
3result=zip(z1,z2)
带有*运算符的Zip()可以对压缩后的列表对象进行解压缩,即把合并后的序列拆分成多个元组. 1zip (* result)。
2[(1,2,3),(4,5,6)]
与序列相关的内置函数有:sorted()、reversed()、enumerate()、zip()
Sorted()和zip()返回一个序列(列表)对象
Reversed()、enumerate()返回一个迭代器(类似于序列)
场景:
*二维矩阵变换(矩阵行列互换)
a=[[1,2,3]、[4,5,6]、[7,8,9]]
zip(*a)
[(1,4,7),(2,5,8),(3,6,9)]
地图(列表,zip(*a))
[[1,4,7],[2,5,8],[3,6,9]]
*获取数据名称=(杰克,贝京曼,索尼, PCKY )
年龄=(2001年、2003年、2005年、2000年)
fora,ninzip(姓名,年龄):
纽约州普林塔市
输出:
杰克2001
始于2003年
2005年
pcky2000
zip的高级应用:1.zip包拆包列表和倍数
a=[1,2,3]
b=[a , b , c]
z=zip(a,b)
z
[(1, a ),(2, b ),(3, c)]
zip(*z)
[(1,2,3),( a , b , c)]
2.使用zip合并相邻的列表项
a=[1,2,3,4,5,6]
zip(*([iter(a)]*2))
[(1,2),(3,4),(5,6)]
group_adjacent=lambdaa,k:zip(*([iter(a)]*k))
group_adjacent(a,3)
[(1,2,3),(4,5,6)]
group_adjacent(a,2)
[(1,2),(3,4),(5,6)]
group_adjacent(a,1)
[(1,),(2,),(3,),(4,),(5,),(6,)]
zip(a[:2],a[1:2])
[(1,2),(3,4),(5,6)]
zip(a[:3],a[1:3],a[2:3])
[(1,2,3),(4,5,6)]
group_adjacent=lambdaa,k:zip(*(a[i:k]foriinrange(k)))
group_adjacent(a,3)
[(1,2,3),(4,5,6)]
group_adjacent(a,2)
[(1,2),(3,4),(5,6)]
group_adjacent(a,1)
[(1,),(2,),(3,),(4,),(5,),(6,)]
3.使用zip和迭代器生成滑动窗口(n元语法)
fromitertoolsimportislice
defn_grams(a,n):
.z=(islice(a,I,None)foriinrange(n))
.returnzip(*z)
.
a=[1,2,3,4,5,6]
n_grams(a,3)
[(1,2,3),(2,3,4),(3,4,5),(4,5,6)]
n_grams(a,2)
[(1,2),(2,3),(3,4),(4,5),(5,6)]
n_grams(a,4)
[(1,2,3,4),(2,3,4,5),(3,4,5,6)]
4.使用zip来反转字典
m={a:1, b:2, c:3, d:4}
m .项目()
[(a ,1),( c ,3),( b ,2),( d ,4)]
zip(m.values()、m.keys())
[(1, a ),(3, c ),(2, b ),(4, d)]
mi=dict(zip(m.values()、m.keys()))
大音阶的第三音
{1:a ,2:b ,3:c ,4:d}
过滤器()
filter函数接受两个参数,func和list,过滤后返回一个列表,其中func函数对象只能有一个传入参数。原理是将list list中的所有元素作为参数传递给函数func,返回能使func返回true的元素列表。如果func为None,将使用默认的Python内置identity函数直接判断元素的真假。
例如:a=[1,2,3,4,5,6,7]
b=滤波器(x:x2,a)
printb
#过滤奇数集
a=[1,2,3,4,5,6,7]
b=滤波器(x:x % 2,a)
printb
地图()
map函数是一个强大的映射函数,传入两个参数,一个是func,一个是list,作用是func作用于给定序列的每个元素,提供一个带有list的返回值。例如:a=[0,1,2,3,4,5,6,7]
地图(lambdax:x ^ 3,a)
a=[1,2,3]
b=[4,5,6]
map(lambdax,y:x y,a,b)
[5,7,9]
#my_map函数实现
defmy_map(func,*args):
return[func(arg)forarginargs]
减少()
减少函数传入参数为功能和列表,其遍历目录元素,并调用功能函数实现累积,具体效果便是:
reduce(f,[x1,x2,x3,x4])=f ( f ( f ( x1,x2),x3),x4)
使用范例如下:
#字符串到整数
定义字符串:
return reduce(lambda x,y: x*10 y,map(int,s))
妙用集锦:http://devop启动器。info/python kai-fa-zhi-MapReduce/
#两个列表,取(x - y) (y - x)
x=[{a: 1, b: 2},{c: 3},{d: 4}]
y=[{a: 1},{c: 3},{e: 5}]
过滤器(z:(x y).计数(z)2,(x y))
#展平嵌套子列表
#结果:[ 1,2,3,4,5 ]
进口经营者
reduce( operator.concat,[ [ 1,2 ],[ 3,4 ],[ ],[ 5 ] ],[ ])
#多项式求和
进口经营者
def evaluate (a,x):
xi=map( lambda i: x**i,range( 0,len(a)))
axi=map(operator.mul,a,xi)
return reduce( operator.add,axi,0)
#数据库结构化查询语言
减少(最大值,贴图(相机。像素,过滤器(
lambda c: c.brand()==尼康,相机) ) )
#也许等于
选择最大值(像素)
来自摄像机
其中品牌="尼康"
#那里。
#相机是一个序列
#哪里子句是一个筛选器
#像素是一张地图
#最大是一个减少
#一行并发
导入urllib2
从多处理。假的导入池作为线程池
URL=[
http://www.python.org,
http://www.google.com,
http://www.baidu.com,
http://www.python.org/community/,
http://www.saltstack.com的
]
#pool=线程池()
池=线程池(4) #将池大小设置为四
结果=池。地图(URL库2。URL打开,URL)
pool.close()
pool.join()
int()转数字int(0 )
str()转字符串str(2)
下部()转小写下部(Windows)
上部()转大写上层(Linux)
iter()
list.count(aaa )统计美国汽车协会在列表中出现的次数