Python中tuple()函數的基本語法如下:
乳山網站制作公司哪家好,找成都創(chuàng)新互聯!從網頁設計、網站建設、微信開發(fā)、APP開發(fā)、響應式網站開發(fā)等網站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯成立與2013年到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選成都創(chuàng)新互聯。
tuple(iterable)
其中,iterable是一個可迭代的對象,例如一個列表或一個字符串。tuple()函數會將這個可迭代對象轉換為一個元組,并返回結果。
例如,如果我們有一個列表 mylist = [1, 2, 3],我們可以使用tuple()函數將其轉換為元組:
mytuple = tuple(mylist)
這樣,mytuple就是一個包含三個元素的元組,即 (1, 2, 3)。
總的來說,Python中tuple()函數的基本語法是將一個可迭代的對象轉換為一個元組,并返回結果。
一:元組(tuple)
1、元組是不可改變的序列,同list一樣,元組可以存放任意類型的元素,一旦元組生成,則它不可以改變(包括增、刪、改)。
2、元組的表示方式:用小括號()括起來,單個元素括起來用逗號(,)區(qū)分是單個對象還是元組
3、元組的創(chuàng)建:
創(chuàng)建空元組的字符值:t=()
創(chuàng)建非空元組的字面值:
t=200,
t=(20,)
t=(1,2,3)
t=100,200,300
4、元組的構造函數(tuple)
A:tuple()生成一個空的元組,等同于()
B:tuple(iterable)用可迭代對象生成一個元組
示例:
t=tuple()
t=tuple(range(10))
t=tuple(‘hello’)
t=tuple([])
二:元組的用法
1、元組的算術運算:(用法與列表的用法完全相同)
+=**=
例:定義兩個元組,與其相加,再用得到的新元組乘以2,與列表對比一下,看看有何不同?(分析:兩原組相加,會把第二個元組的元素放在第一個元組元素的后面,兩元組相乘,會重復原元組元素的個數,乘以幾,就重復幾次)
2、元組的比較運算:
====!=
3、in/not in
索引取值
切片取值
規(guī)則與列表完全相同
區(qū)別:
元組是不可變對象,不支持索引賦值和切片賦值
4、元組的方法
t.index(v[,begin[,end]])----用于獲取元組中V所在的索引位置
t.count(v)----用于獲取元組中V的個數
例:定義一個元組字面值,查看某個值在元組的索引位置,并統(tǒng)計其元組中某個數出現的個數。
5、元組中的三個構造函數和序列函數
Str(obj)
List(iterable)
Tuple(iterable)
序列函數:len,max,min,sum,all,any
元組是用逗號和圓括號定義的一種特殊的序列類型,之所以說它是特殊的,是因為它一旦定義之后,不能修改元素,不能添加元素,也不能刪除元素,即它是不可變序列。元組一般有以下兩種定義方法:
元組與列表的異同:
都屬于序列類型,列表是可變序列類型,可隨時修改、添加或刪除元素,元組是不可變序列,其中的元素不可修改。
元組比列表的訪問和處理速度更快,所以如果只需要對其中的元素進行訪問,建議使用元組。
所以這篇文章,我們先來回顧和總結Python數據結構里常用操作。Python中常見的數據結構可以統(tǒng)稱為容器(container)。序列(如列表和元組)、映射(如字典)以及集合(set)是三類主要的容器。而扁平序列如str、bytes、bytearray、memoryview 和 array.array等不在這篇文章的討論范圍內。
在此,我們先從元組開始說起。
元組區(qū)別于列表的顯著特征之一就是它不能被修改,但其另外一個作用就是 用于沒有字段名的記錄 [1] 。因為后者經常被忽略,我們先來看看元組作為記錄的作用。
使用括號就可以定義一個元組。元組中的每個元素都存放了記錄中一個字段的數據,外加這個字段的位置。正是這個位置信息給數據賦予了意義。下面的例子中,元組就被當作記錄加以利用:
輸出為:
上述for循環(huán)中的操作提取了元組中的元素,也叫作拆包(unpacking)。平行賦值是對元組拆包很好的應用,示例如下:
還有一個經典而優(yōu)雅的應用是交換變量的值:
用 * 運算符把一個可迭代對象拆開作為函數的參數,例如Python的內置函數pmod接收兩個數字類型的參數,返回商和余數。以下范例將使用 * 將元組傳入函數。
輸出為:
有些函數有多個返回值,將其賦給一個變量時,變量類型即是元組:
輸出為:
zip是Python的內置函數,能夠接收兩個或多個序列,并組成一個元組列表,在Python3中會返回一個迭代器,如下所示:
輸出為:
元組當然也支持一些常規(guī)操作,如對于元組 a = (1, 'y', 5, 5, 'x') :
上述內容不僅涵蓋了元組的基本操作,同時也結合了實際工作中常搭配使用的其他函數、運算符等。在回顧這些知識時主要參考了兩本經典的Python編程書籍:《流暢的Python》和《像計算機科學家一樣思考Python》,有興趣的朋友可以深入閱讀!
希望這篇文章對你有幫助,下回將總結Python列表的使用技巧。
[1]《流暢的Python》:
1、函數定義時
-使用單個 * 會將所有的參數,放入一個元組(tuple)供函數使用。
-使用兩個 ** 將所有的關鍵字參數(鍵-值對形式),放入一個字典(dict)供函數使用。
2.函數調用時
-在list,tuple,set前加一個星號會把容器中的所有元素解包(unpack)變成位置參數。
-在dict前加一個星號會把字典的鍵變成位置參數。
-在dict前加兩個星號會把字典的鍵值對變成關鍵字參數。
1、* 的具體使用。位置參數和可變參數的靈活使用
1.1 在函數定義時候,將所有的位置參數放入一個元祖中
1.2 在函數調用時使用*,將list、tuple、set,解包成位置參數。
2、**的具體使用。關鍵字參數和可變參數的具體使用。
2.1 在函數定義時
3、 和 * 在函數中一起使用
注意,在*arg之后,函數只接收關鍵字參數
在前面已經多次提到函數這個概念,之所以沒有解釋什么是函數,是因為程序中的函數和數學中的函數差不多,如input()、range()等都是函數,這些都是Python的標準函數,直接使用就可以了。根據需要,用戶也可以自定義函數。
12.1 函數
函數的結構:
def 函數名(參數):
函數體
return 返回值
例如:數學中的函數f(x)=2x+5在Python中可以定義如下:
def f(x):
y=2*x+5
return(y)
如果x取值為3,可以使用如下語句調用函數:
f(3)
下面給出完整的程序代碼:
def f(x):
y=2*x+5
return(y)
res=f(3)
print(res)
運行結果:11
如上例中的x是函數f(x)的參數,有時也被稱為形式參數(簡稱形參),在函數被調用時,x被具體的值3替換y就是函數的返回值,這個值3也被稱為實際參數(簡稱實參)。
上例中的y是函數f(x)的返回值。并不是所有的函數都有參數和返回值。如下面的函數:
def func():
print('此為無參數傳遞、無返回值的函數')
func()
輸出結果:此為無參數傳遞、無返回值的函數
可以看出,該函數func()無參數,故調用時不用賦給參數值。
函數也可以有多個參數,如f(x,y)=x2+y2,可用Python語言定義如下:
def f(x,y):
z=x**2+y**2
return z
print(f(2,3)) #調用函數f(x,y)
輸出結果:13
也可以通過直接給參數列表中的參數賦值的方法,為參數添加默認值,如果用戶賦予參數值,則按照用戶賦值執(zhí)行,否則使用默認值。例如:
def f(x,y=3):
z=x**2+y**2
return z
若調用時參數列表為(2,1),即x賦值為2,y賦值為1:
print(f(2,1))
輸出結果為:5
若調用時參數列表為(2),即x賦值為2,y賦值省缺,則y使用默認值:
print(f(2))
輸出結果為:13
回調函數,又稱函數回調,是將函數作為另一函數的參數。
例如:
def func(fun,m,n):
fun(m,n)
def f_add(m,n):
print('m+n=',m+n)
def f_mult(m,n):
print('m*n=',m*n)
func(f_add,2,3)
func(f_mult,2,3)
輸出結果:
m+n= 5
m*n= 6
在f_add(m,n)和f_mult(m,n)被定義前,func(fun,m,n)中的fun(m,n)就已經調用了這兩個函數,即“先調用后定義”,這也是回調函數的特點。
如果無法預知參數的個數,可以在參數前面加上*號,這種參數實際上對應元組類型。譬如,參會的人數事先不能確定,只能根據與會人員名單輸入:
def func(*names):
print('今天與會人員有:')
for name in names:
print(name)
func('張小兵','陳曉梅','李大海','王長江')
運行后,輸出結果為:
今天與會人員有:
張小兵
陳曉梅
李大海
王長江
參數為字典類型,需要在參數前面加上**號。
def func(**kwargs):
for i in kwargs:
print(i,kwargs[i])
func(a='a1',b='b1',c='c1')
輸出結果為:
a a1
b b1
c c1
一個有趣的實例:
def func(x,y,z,*args,**kwargs):
print(x,y,z)
print(args)
print(kwargs)
func('a','b','c','Python','is easy',py='python',j='java',ph='php')
輸出結果:
a b c # 前三個實參賦給前三個形參
('Python', 'is easy') # *args接收元組數據
{'py': 'python', 'j': 'java', 'ph': 'php'} # **kwargs接收字典數據
12.2 變量的作用域
變量的作用域即變量的有效范圍,可分為全局變量和局部變量。
局部變量
在函數中定義的變量就是局部變量,局部變量的作用域僅限于函數內部使用。
全局變量
在主程序中定義的變量就是全局變量,但在函數中用關鍵字global修飾的變量也可以當做全局變量來使用。
全局變量的作用域是整個程序,也就是說,全局變量可以在整個程序中可以訪問。
下面通過實例去討論:
程序1:
a=1 # a為全局變量
def a_add():
print('a的初值:',a) # 在函數中讀取a的值
a_add() # 調用函數a_add()
a+=1 # 主程序語句,a增加1
print('a現在的值是:',a) # 主程序語句,讀取a的值
運行結果:
a的初值: 1
a現在的值是: 2
這個結果和我們想象的一樣,全局變量a既可以在主程序中讀取,也可以在子程序(函數)中讀取。
程序2:
a=1
def a_add():
a+=1
print('a的初值:',a)
a_add()
print('a現在的值是:',a)
運行程序1時出現如下錯誤提示:
UnboundLocalError: local variable 'a' referenced before assignment
意思是:局部變量'a'在賦值之前被引用。
從語法上來講,該程序沒有錯誤。首先定義了一個全局變量a并賦值為1,又定義了一個函數a_add(),函數內的語句a+=1就是出錯的根源,雖然我們的初衷是想讓全局變量a的值增加1,但從錯誤提示看,這個語句中的a并不是全局變量,而是局部變量。看來,在函數中讀取全局變量的值是沒有問題的(在程序1中已經得到了驗證),但要在函數中改變全局變量的值是不行的(在程序2的錯誤提示a+=1中的a 是局部變量,而非全局變量)。
怎樣解決這個問題?
程序3:
a=1
def a_add(x):
x+=1
return x
print('a的初值:',a)
a=a_add(a)
print('a現在的值是:',a)
運行結果:
a的初值: 1
a現在的值是: 2
結果的確是正確的,但在函數a_add(x)中沒有調用變量a(沒有出現變量a)。
程序4:
a=1
def a_add(a):
a+=1
return a
print('a的初值:',a)
a=a_add(a)
print('a現在的值是:',a)
運行結果:
a的初值: 1
a現在的值是: 2
對比程序4和程序3不難發(fā)現,其實程序4只是簡單的把函數的參數x變成了a,這個a的實質和程序3中的x還是一樣的。這進一步證實,函數中的a是局部變量,與主程序的全局變量a有著本質的區(qū)別。
程序5:
a=1
def a_add():
global a
a+=1
print('a的初值:',a)
a_add()
print('a現在的值是:',a)
運行結果:
a的初值: 1
a現在的值是: 2
程序5和程序2相比較,僅僅是在函數中添加了一個定義“global a”,此時的局部變量a就可以當做全局變量使用,由于它和全局變量a同名,自然也就不用區(qū)分a究竟是全局變量還是局部變量了,在主程序和該函數內都可以訪問、修改變量a的值了。
雖然使用global可使變量使用起來非常方便,但也容易引起混淆,故在使用過程中還是謹慎為好。
12.3 函數的遞歸與嵌套
遞歸,就是函數調用它自身。遞歸必須設置停止條件,否則函數將無法終止,形成死循環(huán)。
以計算階乘為例:
def func(n):
if n==1:
return 1
else:
return n*func(n-1) #func( )調用func( )
print(func(5))
運行結果為:120
嵌套,指在函數中調用另外的函數。這是程序中常見的一種結構,在此不再贅述。
匿名函數
Python中可以在參數前加上關鍵字lambda定義一個匿名函數,這樣的函數一般都屬于“一次性”的。
例如:
程序1:這是一個常規(guī)的函數定義和調用。
def f_add(x,y):
return x+y
print(f_add(2,3))
輸出結果:5
程序2:使用lambda定義匿名函數。
f_add=lambda x,y:x+y
print(f_add(2,3))
輸出結果:5
從上面的代碼可以看出,使用lambda僅僅減少了一行代碼。f_add=lambda x,y:x+y中的f_add不是變量名,而是函數名。程序1和程序2的print( )語句中的參數都是一樣的——調用函數f_add( )。所以,匿名函數并沒有太多的優(yōu)點。
文章名稱:python函數接收元組 python元組操作
網站網址:http://vcdvsql.cn/article18/hehigp.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站導航、動態(tài)網站、做網站、網站排名、Google、建站公司
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯