当前位置: 首页 > 后端技术 > Python

【经验分享】Python技巧之推导

时间:2023-03-26 11:35:56 Python

介绍列表推导(ListComprehensions)同样来自于函数式编程语言,可以优雅地对序列上的数据进行过滤和处理,得到结果列表。例如,对列表中大于0的所有数字进行平方以生成新列表。num=[-2,3,5,-4,10,7]像往常一样,我们将num=[-2,3,5,-4,10,7]result=[]forxinnum:ifx>0:result.append(x**2)printresult那么,如果使用列表推导公式,只需要打印[x**2forxinnumifx>0]这个公式怎么解释呢?把这个公式分成三部分:输出处理,for循环,if判断。if判断部分是可选的。if判断部分用于筛选。输出处理部分比较灵活,想怎么处理就怎么处理。例如,如果有一个列表A=['1','2','3'],我们可以[int(x)forxinA]将列表中的所有元素都转换为int类型。以上是最基本的形式。还有一些稍微复杂一点的形式,怎么解读呢?方法是,除“输出处理”部分外,其余按从左到右的顺序排列。1)多次for循环[(x,y)forxinrange(3)foryinrange(5)]这里处理的部分是(x,y),其他从左到右。等价于forxinrange(3):foryinrange(5):#Processingpart2)这里是嵌套列表理解[[0foryinrange(3)]forxinrange(5)],处理部分是[0foryinrange(3)],其他都是从左到右。等价于forxinrange(5):#processingpart3)multipleifjudgments[(x,y)forxinrange(3)ifx>1foryinrange(5)ify>2]in这里,处理部分为(x,y),其他从左到右排列。等价于forxinrange(3):ifx>1:foryinrange(5):ify>2:#处理部分展开1)除列表推导外的其他推导。还有生成器推导、集合推导(python2.7及以上)、字典推导(python2.7及以上)。[xforxinrange(3)]#->listcomprehension(xforxinrange(3))#->generatorcomprehension{xforxinrange(3)}#->setcomprehension{x:Noneforxinrange(3)}#->字典理解例如>>>d={'a':1,'b':2,'c':3}>>>d2={v:kfork,vind.items()}#反向映射>>>d2{1:'a',2:'b',3:'c'}>>>d3={k:v.upper()fork,vind2.items()}#所有值都大写>>>d3{1:'A',2:'B',3:'C'}2)蓝鲸项目中的Python3base64编码解码,部分接口报文是通过base64加密传输的,所以在进行接口自动化时,需要对传输的参数进行base64编码,对接收到的响应报文进行解码;例如:运行平台的fast_execute_script(快速执行脚本)script_contentpython3.x中的字符都是unicode编码的,b64encode函数的参数是byte类型,所以必须先转码。importbase64#encodeencoding#decode解码s='adsvsdega15s1dasda'encodestr=base64.b64encode(s.encode('utf-8'))print(encodestr)#b'YWRzdnNkZWdhMTVzMWRhc2Rh'print(str(encodestr,'utf-8'))#YWRzdnNkZWdhMTVzMWRhc2Rhdecodestr=base64.b64decode(encodestr)print(decodestr)#b'adsvsdega15s1dasda'print(str(decodestr,'utf-8'))#adsvsdega15s1dasda蓝鲸智云蓝鲸智云(简称蓝鲸)软件系统是一套基于PaaS的技术解决方案,致力于打造行业领先的一站式自动化运维平台。目前已经推出社区版和企业版,欢迎体验。官网:https://bk.tencent.com/下载链接:https://bk.tencent.com/download/社区:https://bk.tencent.com/s-mart...