您好,登录后才能下订单哦!
这篇文章主要讲解了“Python实用例子有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python实用例子有哪些”吧!
1 链式比较
i=3print(1<i<3)#Falseprint(1<i<=3)#True
2 不用else和if实现计算器
fromoperatorimport*defcalculator(a,b,k):return{'+':add,'-':sub,'*':mul,'/':truediv,'**':pow}[k](a,b)calculator(1,2,'+')#3calculator(3,4,'**')#81
3 函数链
fromoperatorimport(add,sub)defadd_or_sub(a,b,oper):return(addifoper=='+'elsesub)(a,b)add_or_sub(1,2,'-')#-1
4 求字符串的字节长度
defstr_byte_len(mystr):return(len(mystr.encode('utf-8')))str_byte_len('ilovepython')#13(个字节)str_byte_len('字符')#6(个字节)
5 寻找第n次出现位置
defsearch_n(s,c,n):size=0fori,xinenumerate(s):ifx==c:size+=1ifsize==n:returnireturn-1print(search_n("fdasadfadf","a",3))#结果为7,正确print(search_n("fdasadfadf","a",30))#结果为-1,正确
6 去掉最高最低求平均
defscore_mean(lst):lst.sort()lst2=lst[1:(len(lst)-1)]returnround((sum(lst2)/len(lst2)),2)score_mean([9.1,9.0,8.1,9.7,19,8.2,8.6,9.8])#9.07
7 交换元素
defswap(a,b):returnb,aswap(1,0)#(0,1)
1 二分搜索
defbinarySearch(arr,left,right,x):whileleft<=right:mid=int(left+(right-left)/2);#找到中间位置。求中点写成(left+right)/2更容易溢出,所以不建议这样写#检查x是否出现在位置midifarr[mid]==x:print('found%d在索引位置%d处'%(x,mid))returnmid#假如x更大,则不可能出现在左半部分elifarr[mid]<x:left=mid+1#搜索区间变为[mid+1,right]print('区间缩小为[%d,%d]'%(mid+1,right))elifx<arr[mid]:right=mid-1#搜索区间变为[left,mid-1]print('区间缩小为[%d,%d]'%(left,mid-1))return-1
2 距离矩阵
x,y=mgrid[0:5,0:5]list(map(lambdaxe,ye:[(ex,ey)forex,eyinzip(xe,ye)],x,y))[[(0,0),(0,1),(0,2),(0,3),(0,4)],[(1,0),(1,1),(1,2),(1,3),(1,4)],[(2,0),(2,1),(2,2),(2,3),(2,4)],[(3,0),(3,1),(3,2),(3,3),(3,4)],[(4,0),(4,1),(4,2),(4,3),(4,4)]]
1 打印乘法表
foriinrange(1,10):forjinrange(1,i+1):print('{0}*{1}={2}'.format(j,i,j*i),end="\t")print()
结果:
1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81
2 嵌套数组完全展开
fromcollections.abcimport*defflatten(input_arr,output_arr=None):ifoutput_arrisNone:output_arr=[]foreleininput_arr:ifisinstance(ele,Iterable):#判断ele是否可迭代flatten(ele,output_arr)#尾数递归else:output_arr.append(ele)#产生结果returnoutput_arrflatten([[1,2,3],[4,5]],[6,7])#[6,7,1,2,3,4,5]
3 将list等分为子组
frommathimportceildefdivide(lst,size):ifsize<=0:return[lst]return[lst[i*size:(i+1)*size]foriinrange(0,ceil(len(lst)/size))]r=divide([1,3,5,7,9],2)#[[1,3],[5,7],[9]]
4 生成fibonacci序列前n项
deffibonacci(n):ifn<=1:return[1]fib=[1,1]whilelen(fib)<n:fib.append(fib[len(fib)-1]+fib[len(fib)-2])returnfibfibonacci(5)#[1,1,2,3,5]
5 过滤掉各种空值
deffilter_false(lst):returnlist(filter(bool,lst))filter_false([None,0,False,'',[],'ok',[1,2]])#['ok',[1,2]]
6 返回列表头元素
defhead(lst):returnlst[0]iflen(lst)>0elseNonehead([])#Nonehead([3,4,1])#3
7 返回列表尾元素
deftail(lst):returnlst[-1]iflen(lst)>0elseNoneprint(tail([]))#Noneprint(tail([3,4,1]))#1
8 对象转换为可迭代类型
fromcollections.abcimportIterabledefcast_iterable(val):returnvalifisinstance(val,Iterable)else[val]cast_iterable('foo')#foocast_iterable(12)#[12]cast_iterable({'foo':12})#{'foo':12}
9 求更长列表
defmax_length(*lst):returnmax(*lst,key=lambdav:len(v))r=max_length([1,2,3],[4,5,6,7],[8])#[4,5,6,7]
10 出现最多元素
defmax_frequency(lst):returnmax(lst,default='列表为空',key=lambdav:lst.count(v))lst=[1,3,3,2,1,1,2]max_frequency(lst)#1
11 求多个列表的最大值
defmax_lists(*lst):returnmax(max(*lst,key=lambdav:max(v)))max_lists([1,2,3],[6,7,8],[4,5])#8
12 求多个列表的最小值
defmin_lists(*lst):returnmin(min(*lst,key=lambdav:max(v)))min_lists([1,2,3],[6,7,8],[4,5])#1
13 检查list是否有重复元素
defhas_duplicates(lst):returnlen(lst)==len(set(lst))x=[1,1,2,2,3,2,3,4,5,6]y=[1,2,3,4,5]has_duplicates(x)#Falsehas_duplicates(y)#True
14 求列表中所有重复元素
fromcollectionsimportCounterdeffind_all_duplicates(lst):c=Counter(lst)returnlist(filter(lambdak:c[k]>1,c))find_all_duplicates([1,2,2,3,3,3])#[2,3]
15 列表反转
defreverse(lst):returnlst[::-1]reverse([1,-2,3,4,1,2])#[2,1,4,3,-2,1]
16 浮点数等差数列
defrang(start,stop,n):start,stop,n=float('%.2f'%start),float('%.2f'%stop),int('%.d'%n)step=(stop-start)/nlst=[start]whilen>0:start,n=start+step,n-1lst.append(round((start),2))returnlstrang(1,8,10)#[1.0,1.7,2.4,3.1,3.8,4.5,5.2,5.9,6.6,7.3,8.0]
1 字典值最大的键值对列表
defmax_pairs(dic):iflen(dic)==0:returndicmax_val=max(map(lambdav:v[1],dic.items()))return[itemforitemindic.items()ifitem[1]==max_val]max_pairs({'a':-10,'b':5,'c':3,'d':5})#[('b',5),('d',5)]
2 字典值最小的键值对列表
defmin_pairs(dic):iflen(dic)==0:return[]min_val=min(map(lambdav:v[1],dic.items()))return[itemforitemindic.items()ifitem[1]==min_val]min_pairs({})#[]r=min_pairs({'a':-10,'b':5,'c':3,'d':5})print(r)#[('b',5),('d',5)]
3 合并两个字典
defmerge_dict2(dic1,dic2):return{**dic1,**dic2}#python3.5后支持的一行代码实现合并字典merge_dict({'a':1,'b':2},{'c':3})#{'a':1,'b':2,'c':3}
4 求字典前n个最大值
fromheapqimportnlargest#返回字典d前n个最大值对应的键deftopn_dict(d,n):returnnlargest(n,d,key=lambdak:d[k])topn_dict({'a':10,'b':8,'c':9,'d':10},3)#['a','d','c']
5 求最小键值对
d={'a':-10,'b':5,'c':3,'d':5}min(d.items(),key=lambdax:x[1])#('a',-10)
1 互为变位词
fromcollectionsimportCounter#检查两个字符串是否相同字母异序词,简称:互为变位词defanagram(str1,str2):returnCounter(str1)==Counter(str2)anagram('eleven+two','twelve+one')#True这是一对神器的变位词anagram('eleven','twelve')#False
1 查找指定文件格式文件
importosdeffind_file(work_dir,extension='jpg'):lst=[]forfilenameinos.listdir(work_dir):print(filename)splits=os.path.splitext(filename)ext=splits[1]#拿到扩展名ifext=='.'+extension:lst.append(filename)returnlstfind_file('.','md')#返回所有目录下的md文件
1 爬取天气数据并解析温度值
素材来自朋友袁绍
importrequestsfromlxmlimportetreeimportpandasaspdimportreurl='http://www.weather.com.cn/weather1d/101010100.shtml#input'withrequests.get(url)asres:content=res.contenthtml=etree.HTML(content)
通过lxml模块提取值,lxml比beautifulsoup解析在某些场合更高效
location=html.xpath('//*[@id="around"]//a[@target="_blank"]/span/text()')temperature=html.xpath('//*[@id="around"]/div/ul/li/a/i/text()')
结果:
['香河','涿州','唐山','沧州','天津','廊坊','太原','石家庄','涿鹿','张家口','保定','三河','北京孔庙','北京国子监','中国地质博物馆','月坛公园','明城墙遗址公园','北京市规划展览馆','什刹海','南锣鼓巷','天坛公园','北海公园','景山公园','北京海洋馆']['11/-5°C','14/-5°C','12/-6°C','12/-5°C','11/-1°C','11/-5°C','8/-7°C','13/-2°C','8/-6°C','5/-9°C','14/-6°C','11/-4°C','13/-3°C','13/-3°C','12/-3°C','12/-3°C','13/-3°C','12/-2°C','12/-3°C','13/-3°C','12/-2°C','12/-2°C','12/-2°C','12/-3°C']
df=pd.DataFrame({'location':location,'temperature':temperature})print('温度列')print(df['temperature'])
正则解析温度值
df['high']=df['temperature'].apply(lambdax:int(re.match('(-?[0-9]*?)/-?[0-9]*?°C',x).group(1)))df['low']=df['temperature'].apply(lambdax:int(re.match('-?[0-9]*?/(-?[0-9]*?)°C',x).group(1)))print(df)
详细说明子字符创捕获
除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(group)。比如:^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码
m=re.match(r'^(\d{3})-(\d{3,8})$','010-12345')print(m.group(0))print(m.group(1))print(m.group(2))#010-12345#010#12345
如果正则表达式中定义了组,就可以在Match对象上用group()方法提取出子串来。
注意到group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串。
最终结果
Name:temperature,dtype:objectlocationtemperaturehighlow0香河11/-5°C11-51涿州14/-5°C14-52唐山12/-6°C12-63沧州12/-5°C12-54天津11/-1°C11-15廊坊11/-5°C11-56太原8/-7°C8-77石家庄13/-2°C13-28涿鹿8/-6°C8-69张家口5/-9°C5-910保定14/-6°C14-611三河11/-4°C11-412北京孔庙13/-3°C13-313北京国子监13/-3°C13-314中国地质博物馆12/-3°C12-315月坛公园12/-3°C12-316明城墙遗址公园13/-3°C13-317北京市规划展览馆12/-2°C12-218什刹海12/-3°C12-319南锣鼓巷13/-3°C13-320天坛公园12/-2°C12-221北海公园12/-2°C12-222景山公园12/-2°C12-223北京海洋馆12/-3°C12-3
2 批量转化驼峰格式
importredefcamel(s):s=re.sub(r"(\s|_|-)+","",s).title().replace("","")returns[0].lower()+s[1:]#批量转化defbatch_camel(slist):return[camel(s)forsinslist]batch_camel(['student_id','student\tname','student-add'])#['studentId','studentName','studentAdd']
1 turtle绘制奥运五环图
结果:
2 turtle绘制漫天雪花
结果:
3 4种不同颜色的色块,它们的颜色真的不同吗?
4 词频云图
importhashlibimportpandasaspdfromwordcloudimportWordCloudgeo_data=pd.read_excel(r"../data/geo_data.xlsx")words=','.join(xforxingeo_data['city']ifx!=[])#筛选出非空列表值wc=WordCloud(background_color="green",#背景颜色"green"绿色max_words=100,#显示最大词数font_path='./fonts/simhei.ttf',#显示中文min_font_size=5,max_font_size=100,width=500#图幅宽度)x=wc.generate(words)x.to_file('../data/geo_data.png')
1 求斐波那契数列前n项(生成器版)
deffibonacci(n):a,b=1,1for_inrange(n):yieldaa,b=b,a+blist(fibonacci(5))#[1,1,2,3,5]
2 将list等分为子组(生成器版)
frommathimportceildefdivide_iter(lst,n):ifn<=0:yieldlstreturni,div=0,ceil(len(lst)/n)whilei<n:yieldlst[i*div:(i+1)*div]i+=1list(divide_iter([1,2,3,4,5],0))#[[1,2,3,4,5]]list(divide_iter([1,2,3,4,5],2))#[[1,2,3],[4,5]]
1 Keras入门例子
importnumpyasnpfromkeras.modelsimportSequentialfromkeras.layersimportDensedata=np.random.random((1000,1000))labels=np.random.randint(2,size=(1000,1))model=Sequential()model.add(Dense(32,activation='relu',input_dim=100))model.add(Dense(1,activation='sigmoid'))model.compile(optimize='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])model.fit(data,labels,epochs=10,batch_size=32)predictions=model.predict(data)
感谢各位的阅读,以上就是“Python实用例子有哪些”的内容了,经过本文的学习后,相信大家对Python实用例子有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。