欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python進階之高級用法詳細總結(jié)

 更新時間:2021年05月17日 14:35:16   作者:oldmao_2001  
今天帶各位小伙伴學(xué)習(xí)一下Python高級語法,主要有Lambda表達式,map函數(shù),filter函數(shù),reduce函數(shù),三大推導(dǎo)式等,文中有非常詳細的介紹,需要的朋友可以參考下

一、Lambda表達式

Lambda表達式又被稱之為匿名函數(shù)
格式
lambda 參數(shù)列表:函數(shù)體

def add(x,y): 
	return x+y 
print(add(3,4))
#上面的函數(shù)可以寫成Lambda函數(shù)
add_lambda=lambda x,y:x+y 
add_lambda(3,4)

二、map函數(shù)

函數(shù)就是有輸入和輸出,map的輸入和輸出對應(yīng)關(guān)系如下圖所示:

在這里插入圖片描述

就是要把一個可迭代的對象按某個規(guī)則映射到新的對象上。
因此map函數(shù)要有兩個參數(shù),一個是映射規(guī)則,一個是可迭代對象。

list1=[1,2,3,4,5]
r=map(lambda x:x+x,list)
print(list1(r))

結(jié)果:[2,4,6,8,10]

m1=map(lambda x,y:x*x+y,[1,2,3,4,5],[1,2,3,4,5])
print(list(ml))

結(jié)果:[2,6,12,20,30]

三、filter函數(shù)

filter的輸入和輸出對應(yīng)關(guān)系如下圖所示:

在這里插入圖片描述

def is_not_none(s): 
	return s and len(s.strip())>0
list2=['','','hello','xxxx', None,'ai']
result=filter(is_not_none, list2)
print(list(result))

結(jié)果:[‘hello',‘xxxx',‘a(chǎn)i']

四、reduce函數(shù)

在這里插入圖片描述

from functools import reduce
f=lambda x,y:x+y x=reduce(f,[1,2,3,4,5])
print(r)

結(jié)果:15=1+2+3+4+5
相當于每一次計算都是基于前一次計算的結(jié)果:

在這里插入圖片描述

還可以為reduce計算添加初始值:

from functools import reduce
f=lambda x,y:x+y x=reduce(f,[1,2,3,4,5],10)
print(r)

結(jié)果:25=10+1+2+3+4+5

五、三大推導(dǎo)式

5.1 列表推導(dǎo)式

list1=[1,2,3,4,5,6]
f=map(lambda x:x+x,list1)
print(list(f))
list2=[i+i for i in list1]
print(list2)
list3=[i**3 for i in list1]
print(list3)
#篩選列表的例子
list4=[i*4 for i in list1 if i>3]
print(list4)
#結(jié)果
[2,4,6,8,10,12]
[2,4,6,8,10,12]
[1,8,27,64,125,216]
[16,25,36]

5.2 集合推導(dǎo)式

直接把上面代碼copy下來,然后把列表改成集合

list1={1,2,3,4,5,6}

list2={i+i for i in list1}
print(list2)
list3={i**3 for i in list1}
print(list3)
#篩選列表的例子
list4={i*4 for i in list1 if i>3}
print(list4)
#結(jié)果

{2, 4, 6, 8, 10, 12}
{64, 1, 8, 216, 27, 125}#這里是亂序的
{16, 24, 20}

5.3 字典推導(dǎo)式

s={
"zhangsan":20,
"lisi":15,
"wangwu":31
}
#拿出所有的key,并變成列表
s_key=[ key for key, value in s.items()]
print(s_key)
#結(jié)果
['zhangsan','lisi','wangwu']

# 交換key和value位置,注意冒號的位置
s1={ value: key for key, value in s.items()}
print(s1)
#結(jié)果
{20:'zhangsan',15:'1isi',31:'wangwu'}

s2={ key: value for key, value in s.items() if key=="1isi"}
print(s2)
#結(jié)果
{"lisi":15}

六、閉包

閉包:一個返回值是函數(shù)的函數(shù)

import time 
def runtime(): 
	def now_time(): 
		print(time.time())
	return now_time #返回值是函數(shù)名字
f=runtime()#f就被賦值為一個函數(shù)now_time()了
f()#運行f相當于運行now_time()

再來看一個帶參數(shù)的例子:
假設(shè)有一個csv文件,內(nèi)容有三行,具體如下:

a,b,c,d,e
1,2,3,4,5
6,7,8,9,10

def make_filter(keep):# keep=8
	def the_filter(file_name): 
		file=open(file name)#打開文件
		lines=file.readlines()#按行讀取文件
		file.close()#關(guān)閉文件
		filter_doc=[i for i in lines if keep in i]#過濾文件內(nèi)容
		return filter_doc 
	return the_filter

filter1=make_filter("8")#這一行調(diào)用了make_filter函數(shù),且把8做為參數(shù)傳給了keep,接受了the_filter函數(shù)作為返回值
#這里的filter1等于函數(shù)the_filter
filter_result=filter1("data.csv")#把文件名data.csv作為參數(shù)傳給了函數(shù)the_filter
print(filter_result)
#結(jié)果
['6,7,8,9,10']

七、裝飾器、語法糖、注解

# 這是獲取函數(shù)開始運行時間的函數(shù)
import time 
def runtime(func): 
	def get_time(): 
		print(time.time())
		func()# run被調(diào)用	
	return get_time
@runtime
def run()
	print('student run')

#運行
run()

#結(jié)果
當前時間
student run	

由于有裝飾器@runtime的存在,會把run這個函數(shù)作為參數(shù)丟到runtime(func)里面去,如果調(diào)整打印時間代碼的位置會有不同結(jié)果:

# 這是獲取函數(shù)結(jié)束運行時間的函數(shù)
import time 
def runtime(func): 
	def get_time(): 
		func()# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run()
	print('student run')

#運行
run()

#結(jié)果
student run	
當前時間

這里還要注意,這里還用到了閉包的概念,在運行run函數(shù)的時候,調(diào)用的實際上是get_time函數(shù)。

對于多個參數(shù)的函數(shù)如何調(diào)用,看下面例子

#有一個參數(shù)
import time 
def runtime(func): 
	def get_time(i): 
		func(i)# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run(i)
	print('student run')
#運行
run(1)
#有兩個參數(shù)
import time 
def runtime(func): 
	def get_time(i,j): 
		func(i,j)# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run(i,j)
	print('student run')
#運行
run(1,2)

可以發(fā)現(xiàn),這樣寫對于函數(shù)的多態(tài)不是很好,因此可以寫為:

#自動適配參數(shù)
import time 
def runtime(func): 
	def get_time(*arg): 
		func(*arg)# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run(i)
	print('student1 run')

@runtime
def run(i,j)
	print('student2 run')
#運行
run(1)
run(1,2)

再次進行擴展,更為普適的寫法,可以解決傳入類似i=4的關(guān)鍵字參數(shù)寫法:

#自動適配參數(shù)
import time 
def runtime(func): 
	def get_time(*arg,**kwarg): 
		func(*arg,**kwarg)# run被調(diào)用	
		print(time.time())		
	return get_time
@runtime
def run(i)
	print('student1 run')

@runtime
def run(*arg,**kwarg)
	print('student2 run')

@runtime
def run()
	print('no param run')
#運行
run(1)
run(1,2,j=4)
run()

到此這篇關(guān)于Python進階之高級用法詳細總結(jié)的文章就介紹到這了,更多相關(guān)Python高級用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python pytest進階之xunit fixture詳解

    python pytest進階之xunit fixture詳解

    這篇文章主要介紹了python pytest進階之xunit fixture詳解,了解unittest的同學(xué)應(yīng)該知道我們在初始化環(huán)境和銷毀工作時,unittest使用的是setUp,tearDown方法,那么在pytest框架中同樣存在類似的方法,今天我們就來具體說明,需要的朋友可以參考下
    2019-06-06
  • Python機器學(xué)習(xí)之Kmeans基礎(chǔ)算法

    Python機器學(xué)習(xí)之Kmeans基礎(chǔ)算法

    這篇文章主要介紹了Python機器學(xué)習(xí)之Kmeans基礎(chǔ)算法,文中有非常詳細的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • python實現(xiàn)多線程抓取知乎用戶

    python實現(xiàn)多線程抓取知乎用戶

    本文給大家分享的是如何使用Python實現(xiàn)多線程抓取知乎用戶的思路以及代碼,非常的詳細,作者使用本程序成功抓取到了百萬用戶,有需要的小伙伴可以參考下
    2016-12-12
  • 看看如何用Python繪制小米新版天價logo

    看看如何用Python繪制小米新版天價logo

    這篇文章主要介紹了看看如何用Python繪制小米新版天價logo,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • 教你一分鐘在win10終端成功安裝Pytorch的方法步驟

    教你一分鐘在win10終端成功安裝Pytorch的方法步驟

    這篇文章主要介紹了教你一分鐘在win10終端成功安裝Pytorch的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Tensorflow環(huán)境搭建的方法步驟

    Tensorflow環(huán)境搭建的方法步驟

    本篇文章主要介紹了Tensorflow環(huán)境搭建的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • DjangoUeditor圖片不顯示img的src沒有域名問題

    DjangoUeditor圖片不顯示img的src沒有域名問題

    在使用DjangoUeditor過程中,可能遇到圖片上傳后不顯示問題,解決辦法是修改源碼view.py,加入代碼使得保存的圖片URL帶有協(xié)議和域名,具體做法是在保存圖片代碼中添加request.scheme獲取協(xié)議,request.META['HTTP_HOST']獲取域名
    2024-09-09
  • 教大家玩轉(zhuǎn)Python字符串處理的七種技巧

    教大家玩轉(zhuǎn)Python字符串處理的七種技巧

    這篇文章主要給大家介紹了關(guān)于學(xué)會Python字符串處理的七種技巧,其中包括字符串的連接和合并、字符串的切片和相乘、字符串的分割、字符串的開頭和結(jié)尾的處理、字符串的查找和匹配、字符串的替換以及字符串中去掉一些字符等操作,需要的朋友可以參考。
    2017-03-03
  • python檢測某個變量是否有定義的方法

    python檢測某個變量是否有定義的方法

    這篇文章主要介紹了python檢測某個變量是否有定義的方法,實例分析了Python常用的變量判定技巧,需要的朋友可以參考下
    2015-05-05
  • Python實現(xiàn)列表刪除重復(fù)元素的三種常用方法分析

    Python實現(xiàn)列表刪除重復(fù)元素的三種常用方法分析

    這篇文章主要介紹了Python實現(xiàn)列表刪除重復(fù)元素的三種常用方法,結(jié)合實例形式對比分析了Python針對列表元素的遍歷、判斷、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11

最新評論