18 条好用的 Python 技巧建议收藏!.docx
18条好用的Py1.hOn技巧,建议收藏!在这篇文章中,我们将讨论最常用的python技巧,大多数这些技巧都是我在日常工作中使用过的简单的Trick,我觉得好东西就是要拿出来和大家一起分享。闲话少说,我们直接开始吧!:)处理用户的多个输入有时我们需要从用户那里获得多个输入,以便使用循环或任何迭代,一般的写法如下:#badpractice码n1.=input("enternumber:")2=input("enternumber:")n2=input("enternumber:")print(n1.,n2,n3)但是更好的处理方法如下:# goodpracticen1.,n2,3=input("enteranumber:").sp1.it()print(n1.,112,n3)处理多个条件语句如果我们在代码中需要检有多个条件语句,此时我们可以使用a1.1.()或any()函数来实现我们的目标。一般来说,当我们有多个and条件时使用a1.1.(),当我们有多个or条件时使用any().这种用法将使我们的代码更加清晰易读,可以方便我们在调试时不会遇到麻烦。对于a1.1.()的一股例子如下:size=',1.g"co1.or="b1.ue"price=50# badpracticeifsize=',1.g"andco1.or="b1.ue"andprice<100:print("YesjIwanttobuttheproduct.")更好的处理方法如下:# goodpracticeconditions=size="1.g",co1.or="b1.ue",price<100,ifa1.1.(conditions):rint("Yes,Iwanttobuttheproduct.,)对于any。的一般例子如下:# badpracticesize="1.g"co1.or="b1.ue"price-50ifsize="1.g,'orco1.or="b1.ue"orprice<100:print("Yes,Iwanttobuttheproduct.',)更好的处理方法如下:# goodpracticeconditions=size=,1.g"jco1.or="b1.ue",price<100,ifany(conditions):print("Yes,Iwanttobuttheproduct.")判断数字奇偶性这很容易实现,我们从用户那里得到输入,将其转换为整数,检查对数字2的求余操作,如果余数为零,则它是偶数。print('odd'ifint(input('Enteranumber:')%2e1.se'even,)交换变量在Python中如果需要交换变量的值,我们无需定义临时变量来操作。我们一般使用如下代码来实现变量交换:V1.=100v2=200#badpracticetemp=v1.v1.=v2v2=temp但是更好的处理方法如下:V1.=100v2=200#goodpracticev1.,v2=v2,v1.判断字符串是否为回文串将字符串进行反转最简单的实现方式为:-1,代码如下:print("JohnDeo":-1)反转字符串在Python中判断一个字符串是否为回文串,只需要使用语句string.find(string:-1)=0,示例代码如下:v1.="madam"#tSapa1.indromestringv2三"master"#isnotapa1.indromestringprint(v1.find(v1.:-1)=0)#Trueprint(v1.find(v2:-1)=)#Fa1.se尽量使用In1.ineifstatement大多数情况下,我们在条件之后只有一个语句,因此使用In1.ineifstatement可以帮助我们编写更简洁的代码。举例如下,一般的写法为:name="a1.i"age-22# badpracticesifname:print(name)ifnameandage>18:print("userisverified")但是更好的处理方法如下:# abetterapproachprint(nameifnamee1.se"")hereyouhavetodefinethee1.seconditiontoo"""# goodpracticenameandprint(name)age>18andnameandprint("userisverified")删除1.ist中的重复元素我们不需要遍历整个IiSt列表来检查重复元素,我们可以简单地使用set()来删除重复元素,代码如下:1st=1.i2,3,4,3,4,4,5,6,3,1,6,7,9,4,0print(1.st)unique_1.st=1.ist(set(1.st)print(unique_1.st)找到1.ist中重复最多的元素在Python中可以使用ma×()函数并传递Iist.CoUnt作为key,即可找出列表1.ist中重复次数最多的元素,代码如下:1st=1,2,3,4,3,4,4,5,6,3,1,6,7,9,4,0most_repeated_item=ma×(1.st,key=1.st.count)print(most_repeated_item)1.ist生成式Python中我最喜欢的功能就是1.istcomprehensions,这个特性可以使我们编写非常简洁功能强大的代码,而且这些代码读起来几乎像自然语言一样通俗易懂。举例如下:numbers=1,2,3,4,5,6,7evens=xforXinnumbersifx%2is0odds=yforyinnumbersifynotinevenscities='1.ondon,i'Dub1.in','Os1.o'defvisit(city):print("Weto"+city)forcityincities:visit(city)使用*args传递多个参数在Python中我们可以使用*args来向函数传递多个参数,举例如下:defsum_of_squares(n1.,n2)returnn1.*2+n2*2print(sum_of_squares(2,3)#output:13IHHwhateverifyouwanttopass,mu1.tip1.eargstothefunctionasnnumberofargs,so1.et'smakeitdynamic.defsum_of_squares(*args):returnsum(item*2foriteminargs)#nowyoucanpassasmanyparametersasyouwantprint(sum_of_squares(2,3,4)print(sum_of_squares(2,3,4,5,6)在循环时处理下标有时我们在工作中,想要获得循环中元素的下标,一般来说,比较优雅的写法如下:1st="b1.ue","1.ightb1.ue","pink","orange","red"foridx,iteminenumerate(1.st):print(id×,item)拼接1.ist中多个元素在Python中一般使用JoinO函数来将1.ist中所有元素拼接到一起,当然我们也可以在拼接的时候添加拼接符号,样例如下:names="john",',sara","jim,',"rock"print(",".join(names)将两个字典进行合并在Python中我们可以使用*dictjame,*dict_name2,将多个字典进行合并,样例如下:d1.="v1.":22,"v2":33d2="v2h:44,v3":55d3=*d1.,*d2print(d3)结果如下:'v1.,:22,v2,:44,v3':55使用两个1.ist生成一个字典在Python中,如果我们需要将两个列表中对应的元素组成字典,那么我们可以使用zip功能来方便地做到这一点。代码如下:keys='a','b'j'c'va1.s=1,2,3zipped=dict(zip(keys,va1.s)字典按照va1.ue进行排序在Python中我们使用SOrted()函数来按照字典的va1.ue来对其进行排序.代码如下:"v1.":8。,,v2":20,v3":40,"v4":20,v5":10,)sorted-d=diet(sorted(d.items(),key=1.ambdaitem:item1.)print(sorted-d)当然我们也可以使用itemgetter()来替代上述Iambda函数,代码如下:fromoperatorimportitemgettersorted-d=diet(sorted(d.items(),key=itemgetter(1.)更进一步,我们也可以通过传递reverse=True对其进行降序排序:sorted-d=diet(sorted(d.items(),key=itemgetter(1),reverse=True)Prettyprint在Python中使用Prim()函数,有时候的输出贼拉拉丑陋,此时我们使用pprint可以使输出更加美观,样例如下:frompprintimportpprintdata=name":"johndeo","age":"22","address":"contry":"canada","state":"anstateofCanada:)","address":"streetst.34north12","attr":"verified":True,"emia1.address":True),)print(data)pprint(data)输出如下:'name':'johndeo','age,:'22','address,:'contry,:,canada,state':,anstateofCanada'address':'streetst.34north12,t'attr':'verified':True,'emia1.address':True'address':'address':'streetst.34north12,'contry,:,Canada,t'state':,anstateofCanada'age':'22,attr':'emia1.address,:True,'verified':True),'name':,johndeo'可见使用pprint函数可以让字典的输出更加容易阅读反转列表Python中通常有两种反转列表的方法:切片或reverse()函数调用.这两种方法都可以反转列表,但需要注意的是内置函数reverse()会更改原始列表,而切片方法会创建一个新列表。但是他们的表现呢?哪种方式更有效?让我们看一下下面的例子:$python-mtimeit-n10000