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

Python列举12个生成小函数,你经常用到哪些?

时间:2023-03-26 15:13:17 Python

作者|zglg来源|python与算法社区[]在python中代表一个列表,而生成新列表最高效快捷的方式是对容器类数据进行计算和运算,即列表生成方式。它优雅、简单,值得大量使用!今天就来盘点列表生成器在工作中的主要使用场景。入门1range快速生成连续列表In[1]:a=range(11)In[2]:aOut[2]:range(0,11)In[3]:list(a)Out[3]:[0,1,2,3,4,5,6,7,8,9,10]2对列表中的数据进行操作后重新生成一个新的列表:在[5]中:a=range(0,11)In[6]:b=[x**2forxina]In[7]:bOut[7]:[0,1,4,9,16,25,36,49,64,81,100]3过滤列表中的数据,只计算[0,11]中偶数的平方:In[10]:a=range(11)In[11]:c=[x**2forxinaifx%2==0]In[12]:cOut[12]:[0,4,16,36,64,100]4之前的列表生成公式只传一个参数x,而带两个参数的运算:在[13]中:a=range(5)在[14]中:b=['a','b','c','d','e']在[20]中:c=[str(y)+str(x)forx,yinzip(a,b)]In[21]:cOut[21]:['a0','b1','c2','d3','e4']5组合字典,打印键值对:In[22]:a={'a':1,'b':2,'c':3}In[23]:b=[k+'='+vfork,vina.items()]In[24]:b=[k+'='+str(v)fork,vina.items()]In[25]:bOut[25]:['a=1','b=2','c=3']6输出一个目录下所有文件和文件夹的名称:In[33]:[dfordinos.listdir('d:/summary')]Out[33]:['a.txt.txt','python-100']7列表中的所有单词都转换为小写:In[34]:a=['Hello','World','2019Python']In[35]:[w.lower()forwina]Out[35]:['hello','world','2019python']高级8组值:In[36]:defbifurcate(lst,filter):...:return[...:[xfori,xinenumerate(lst)iffilter[i]==True],...:[xfori,xinenumerate(lst)iffilter[i]==False]...:]...:In[37]:bifurcate(['beep','boop','foo','bar'],[True,True,False,True])Out[37]:[['beep','boop','bar'],['foo']]9进一步抽象示例8,根据指定函数对lst进行分组fn:In[38]:defbifurcate_by(lst,fn):...:return[...:[xforxinlstiffn(x)],...:[xforxinlstifnotfn(x)]...:]...:In[39]:bifurcate_by(['beep','boop','foo','bar'],lambdax:x[0]=='b')Out[39]:[['beep','boop','bar'],['foo']]10返回differencesetofiterableobjects,注意先用set包裹a,bIn[53]:defdifference(a,b):...:_a,_b=set(a),set(b)...:return[itemforitemin_aifitemnotin_b]...:...:In[54]:difference([1,1,2,3,3],[1,2,4])Out[54]:[3]11进一步提炼10,取差根据函数fn映射后设置,下面的列表元素是单元素和字典的例子:In[61]:defdifference_by(a,b,fn):...:...:_b=set(map(fn,b))...:...:return[itemforiteminaiffn(item)notin_b]...:...:...:In[62]:frommathimportfloor...:difference_by([2.1,1.2],[2.3,3.4],floor)Out[62]:[1.2]In[63]:difference_by([{'x':2},{'x':1}],[{'x':1}],lambdav:v['x'])Out[63]:[{'x':2}]12过滤非重复值,结合list的计数(统计元素在list中出现的次数):In[64]:deffilter_non_unique(lst):...:return[lst中的项目iflst.count(item)==1]In[65]:filter_non_unique([1,2,2,3,4,4,5])Out[65]:[1,3,5]以上12项的熟练操作就算你掌握了python中非常好用的列表生成

最新推荐
猜你喜欢