有时候你会看到很酷的Python代码,惊叹于它的简洁和优雅,不禁赞叹:原来你还能这么写。其实,这些优雅的代码都是得益于Python的特性。只要你能掌握这些Pythonic技能,你也能像诗一样写出Python代码。1.导入模块调用模块时是否经常为输入一长串模块索引而头疼?说实话,数量少的时候,可能勉强能忍。一旦节目规模增大,这也是一个不容小觑的项目。importurllib.requesturl=r'http://www.landsblog.com'req=urllib.request.Request(url)response=urllib.request.urlopen(req)formurllibimportrequesturl=r'http://www.landsblog.com'req=request.Request(url)response=request.urlopen(req)这样是不是节省了一点时间?但是这样的缩写可能会导致模块名称重复的问题,如何解决呢?frommodule_aimportfunasa_funfrommodule_bimportfunasb_fun方法也适用于模块名比较长的模块。印象最深的是bs4importBeautifulSoupasBShtml='''...'''soup=BS(html)中的BeautifulSoup模块,省时省力。2.关于“_”##这是一个非常有用的功能,可惜很少有人知道。当你在交互界面中输入代码,得到了一个临时结果,但是没有用变量名保存,可以用“_”来得到最新的临时结果。>>>1+12>>>_2将最后一个输出值存储在“_”中。这在交互模式下非常有用,当您在过程中不保存计算结果,或者您想查看执行的最后一步的输出时。3.合并字符串这是一个老掉牙的问题。当我们需要合并几个字符串时,我们习惯性地使用“+”作为连接字符串的手段。但是,由于不可变对象在内存中生成后无法修改,所以合并后的字符串会重新开辟一块内存空间进行存储。这样一来,就像滚雪球一样,内存很快就会被耗尽。#Badstring=['a','b','c','d','e','f','g','h']deffun(string):all_string=''foriinstring:all_string+=ireturnall_string#Goodstring=['a','b','c','d','e','f','g,'h']deffun(string):all_string=''.join(string)returnall_string4.强大的zip()是Python的内置函数。zip函数接受任意数量的序列(包括0和1)作为参数,并返回包含元组的列表。zip()函数可以在许多情况下简化您的代码。##矩阵行列互换#Bada=[[1,2,3],[4,5,6],[7,8,9]]re_a=[[row[col]forrowina]forcolinrange(len(a))]>>>[[1,4,7],[2,5,8],[3,6,9]]#Gooda=[[1,2,3],[4,5,6],[7,8,9]]re_a=list(zip(*a))>>>[[1,4,7],[2,5,8],[3,6,9]]##交换dict的键值a={'a':1,'b':2,'c':3,'d':4}defreverse_dict(a):new_dict={}fork,vinm.items():new_dict[v]=kreturnnew_dicta={'a':1,'b':2,'c':3,'d':4}defreverse_dict(a):k=a.keys()v=a.values()new_dict=dict(zip(v,k))returnnew_dict##Mergelistadjacentitemsa=[1,2,3,4,5,6]list(zip(a[::2],a[1::2]))>>>[(1,2),(3,4),(5,6)]5.变量值交换tmp=aa=bb=tmpa,bb=b,a6。在循环中获取索引(数组下标)?a=[8,23,45,12,78]forindex,valueinenumerate(a):print(index,value)7.如何在一行中捕获多个异常?try:passexcept(ExceptionA,ExceptionB,...)ase:pass8。将列表分成相同大小的块?a=[1,2,3,4,5,6]列表(zip(*[iter(a)]*2))>>>[(1,2),(3,4),(5,6)]9.如何查找列表中某个元素的下标?a=['a','b','c','d','e','f']aa_i=a.index(a)>>>010。如何快速反转字符串?a='Pythonisapowerfullanguange.'listlist_a=list(a)list_a.reverse()re_a=''.join(list_a)a='Pythonisapowerfullanguange.'re_a=a[::-1]11.数值比较x=2if1
