标签:PythonPython练习题Python知识点
答案:
In[1]:fromfunctoolsimportreduceIn[2]:print(reduce(lambdax,y:x+y,range(1,1001)))Out[2]:500500知识点:1.匿名函数:lambda参数:表达式lambda语句中,开头先写关键字lambda,冒号前是参数,可以有多个,用逗号隔开;冒号右边的为表达式,需要注意的是只能有一个表达式。由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收。
reduce把一个函数作用在一个序列[x1,x2,x3,...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)简单代码举例:对1~1000求和
In[1]:fromfunctoolsimportreduceIn[2]:print(reduce(lambdax,y:x+y,range(1,1001)))Out[2]:5005003>filter()Python内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。简单代码举例:过滤掉列表中的基数
In[12]:list(filter(lambdax:x%2==0,range(1,9)))Out[12]:[2,4,6,8]4>sorted()对所有可迭代的对象进行排序操作,返回重新排序的列表。
sort与sorted区别:sort是应用在list上的方法,sorted可以对所有可迭代的对象进行排序操作。list的sort方法返回的是对已经存在的列表进行操作,而内建函数sorted方法返回的是一个新的list,而不是在原来的基础上进行的操作。
语法:sorted(iterable[,cmp[,key[,reverse]]])
参数说明:iterable--可迭代对象。cmp--比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。key--主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse--排序规则,reverse=True降序,reverse=False升序(默认)。简单代码举例:
In[14]:a=[5,9,2,3,4,7,1]In[15]:b=sorted(a)#保留原列表In[16]:aOut[16]:[5,9,2,3,4,7,1]In[18]:bOut[18]:[1,2,3,4,5,7,9]In[19]:L=[('b',2),('a',1),('c',3),('d',4)]In[20]:sorted(L,cmp=lambdax,y:cmp(x[1],y[1]))#利用cmp函数Out[20]:[('a',1),('b',2),('c',3),('d',4)]In[21]:sorted(L,key=lambdax:x[1])#利用keyOut[21]:[('a',1),('b',2),('c',3),('d',4)]In[22]:students=[('john','A',15),('jane','B',12),('dave','B',10)]In[23]:sorted(students,key=lambdas:s[2])#按年龄排序Out[23]:[('dave','B',10),('jane','B',12),('john','A',15)]In[24]:sorted(students,key=lambdas:s[2],reverse=True)#按降序Out[24]:[('john','A',15),('jane','B',12),('dave','B',10)]3.列表(数组)生成式,range与xrange1>rangerange([start,]stop[,step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。
比如:
In[1]:range(5)Out[1]:[0,1,2,3,4]In[2]:range(1,5)Out[2]:[1,2,3,4]In[3]:range(0,6,2)Out[3]:[0,2,4]2>xrangexrange用法与range完全相同,所不同的是生成的不是一个list对象,而是一个生成器。比如: