【Python】Python入门:4000字能把元组tuple讲透吗?
公眾號:尤而小屋
作者:Peter
編輯:Peter
在前面介紹的python數(shù)據(jù)類型:列表list,我們發(fā)現(xiàn)list是可以進(jìn)行修改的。但是有時候,我們需要創(chuàng)建一系列不可修改的元素,此時Python中另一種有序的數(shù)據(jù)類型-元組tuple就可以滿足這種需求。
本篇文章在jupyter notebook中的整體布局:
一、如何寫文章
最近有朋友問過我:Peter,你是如何寫一篇公眾號的文章?
今天列了個提綱,主要是從4個方面來展開,以后我會專門寫一篇文章來回答這個問題:
寫作前
寫作中
寫作后
發(fā)布文章
時間擠擠都是有的;有時候熬夜,周末都在寫!
互聯(lián)網(wǎng),卷!
二、元組創(chuàng)建
元組在Python中使用圓括號()括起來的,列表使用方括號[]括起來的
元組里面的元素是通過逗號來隔開的
元組中的元素可以是任意的python數(shù)據(jù)類型
元組是序列,和列表一樣,但是元組中的元素是不能直接更改的
2.1創(chuàng)建空元組
a?=?() a下面的結(jié)果表示創(chuàng)建了一個空的元組:
() type(a) tuple2.2單個元素
b?=?(3,)??#?數(shù)值型 b (3,) type(b)??#?查看數(shù)據(jù)類型為:元組 tuple c?=?("python",)??#?字符型 c ('python',) type(c) tuple d?=?(["python","java",3],)??#?只有一個元素,并且是列表 d (['python', 'java', 3],) type(d) tuple需要注意的是:當(dāng)元組中只有一個元素的時候,后面一定要帶上逗號,否則python不會認(rèn)為是元組的:
e?=?(3)??#?沒有帶上逗號,系統(tǒng)默認(rèn)是數(shù)值型 e 3 type(e)?? int f?=?(["python","java"])??#?只有一個元素列表 f ['python', 'java'] type(f)???#?系統(tǒng)默認(rèn)為:列表 list上面的多個例子都表明:如果創(chuàng)建只有一個元素(任意python類型)的元組,最后一定得帶上括號
2.3多個元素
通過多個元素組成的元組,元素可以是不同的數(shù)據(jù)類型
t1?=?(1,2,3)???#?全部是數(shù)值型? t1 (1, 2, 3) type(t1) tuple t2?=?(1,"pyton","java")??#?數(shù)值型+字符串 t2 (1, 'pyton', 'java') type(t2) tuple t3?=?(1,[1,2,3],"python")????#?數(shù)值型+列表+字符串 t3 (1, [1, 2, 3], 'python') type(t3) tuple看看下面這個神奇的例子:當(dāng)我們給變量t4賦值的時候,后面有3個值;
通過運(yùn)行結(jié)果可以看到,Python把它們當(dāng)成了一個整體,放到了一個元組中
t4?=?100,"python","hello" t4 (100, 'python', 'hello') type(t4)??#?數(shù)據(jù)類型是元組 tuple元組中的元素還可以是元組類型
t5?=?(1,2,(3,4,5),"python")??#?其中(3,4,5)部分就是元組 t5 (1, 2, (3, 4, 5), 'python') type(t5) tuple2.4通過tuple函數(shù)創(chuàng)建
在使用tuple創(chuàng)建的過程中,要將元素先用小括號括起來
tuple1?=?tuple((1,3,5,7))??#?兩層括號 tuple1 (1, 3, 5, 7) type(tuple1) tuple如果只使用一層,則會報(bào)錯;tuple方法只接受一個參數(shù):
tuple(1,3,5,7)???? ---------------------------------------------------------------------------TypeError Traceback (most recent call last)<ipython-input-26-b16145832f5a> in <module> ----> 1 tuple(1,3,5,7)TypeError: tuple expected at most 1 arguments, got 4 tuple2?=?tuple((1,"c",5,"python")) tuple2 tuple3?=?tuple(([1,2,3],3,"python",7)) tuple32.5zip函數(shù)創(chuàng)建
zip是Python中的一個高階函數(shù),后面會專門介紹zip的使用;我們也可以通過它來創(chuàng)建元組
name?=?["小明","小紅","小周"] age?=?[20,28,19]zip(name,age)??#?生成一個zip對象 <zip at 0x107d34320> list(zip(name,age))?#?1、對象轉(zhuǎn)成列表,列表中的元素是一個個的元組 [('小明', 20), ('小紅', 28), ('小周', 19)] tuple(zip(name,age))???#?2、轉(zhuǎn)成元組中嵌套元組 (('小明', 20), ('小紅', 28), ('小周', 19)) dict(zip(name,age))??#?3、還可以轉(zhuǎn)成字典的形式(后續(xù)介紹字典,也是Python的一種數(shù)據(jù)類型) {'小明': 20, '小紅': 28, '小周': 19}三、元組基本操作
3.1求長度
t6?=?(0,1,2,3,4,5,6,7,8)???#?純數(shù)值型 t6 (0, 1, 2, 3, 4, 5, 6, 7, 8) t7?=?("python","java","c")???#?字符類型? type(t7) tuple len(t6) 9 len(t7) 33.2重復(fù)元組元素
t7?*?3??#?復(fù)制3倍 ('python', 'java', 'c', 'python', 'java', 'c', 'python', 'java', 'c')3.3多個元組相加
t6?+?t7 (0, 1, 2, 3, 4, 5, 6, 7, 8, 'python', 'java', 'c')3.4查看最值
是通過元組中元素的ASCII碼來區(qū)分大小的
max(t6) 8 min(t7) 'c' t5 (1, 2, (3, 4, 5), 'python')此時需要注意的是:使用max或者min的時候,元組中元素的數(shù)據(jù)類型必須一致,否則無法進(jìn)行比較,則會報(bào)錯:
max(t5) ---------------------------------------------------------------------------TypeError Traceback (most recent call last)<ipython-input-41-f6f6f0f7436f> in <module> ----> 1 max(t5)TypeError: '>' not supported between instances of 'tuple' and 'int'3.5成員判斷in
1?in?t6 True 10?in?t6 False3.6遍歷元組
for?i?in?t6:??#?遍歷元組中的元素進(jìn)行打印print(i) 0 1 2 3 4 5 6 7 8四、修改元組?
4.1不能直接修改
在開頭我們已經(jīng)提到過:元組中的元素不能直接進(jìn)行修改的
t7 ('python', 'java', 'c') t7[1] 'java'當(dāng)我們想把其中的java改成JavaScript的時候,就會出現(xiàn)報(bào)錯,因?yàn)樵M本身就是不能修改的:
t7[1]?=?"JavaScript"????? ---------------------------------------------------------------------------TypeError Traceback (most recent call last)<ipython-input-47-7885d09b5b02> in <module> ----> 1 t7[1] = "JavaScript"TypeError: 'tuple' object does not support item assignment4.2轉(zhuǎn)成列表進(jìn)行修改
因?yàn)榱斜硎强梢赃M(jìn)行修改的,我們可以先將元組轉(zhuǎn)成列表,然后修改對應(yīng)列表中的元素,最后再轉(zhuǎn)回去
t7 ('python', 'java', 'c') t7_1?=?list(t7)??#?1、轉(zhuǎn)成列表 t7_1 ['python', 'java', 'c'] t7_1[1]?=?"javascript"?#?2、修改元素 t7_1 ['python', 'javascript', 'c'] t7_2?=?tuple(t7_1)??#?3、再轉(zhuǎn)成元組 t7_2 ('python', 'javascript', 'c')五、索引和切片
元組和列表一樣,都是python中一種有序的數(shù)據(jù)類型,也是存在使用和切片的概念
5.1使用索引
使用索引號來訪問元組元素
t6.index(0)??#?元素0的索引號 0 t6.index(6)??#?元素6的索引號 6 t6[8]??#?正索引號 8 t6[-4]??#?負(fù)索引號 5 t7.index("java")???#?查看元素的使用號 1 t7[1]???#?通過索引號查看元素 'java'5.2使用切片
元組中切片使用規(guī)則和列表是完全一模一樣的,可以參考列表的文章來進(jìn)行學(xué)習(xí)。
下面僅僅是展示在元組中使用切片后的案例學(xué)習(xí):
t6[:7] (0, 1, 2, 3, 4, 5, 6) t6[1:8:2] (1, 3, 5, 7) t6[:8:2]???#?從頭開始,步長為2 (0, 2, 4, 6)從最后一個元素(索引號-1),到索引號-8(不包含),步長為-2
t6[-1:-8:-2]??? (8, 6, 4, 2) t6[-2:-7:-2] (7, 5, 3) t6[1:8:3] (1, 4, 7)六、元組和列表比較
6.1相同點(diǎn)
都是Python中的有序數(shù)據(jù)類型
都存在很多相同的操作方法:求長度、最值、成員判斷、索引和切片等
6.2不同點(diǎn)
列表可直接修改,元組不行;我們可以將元組轉(zhuǎn)成列表之后,再間接地進(jìn)行修改元素
元組比列表快。如果我們定義了一個變量,需要不斷地去遍歷它,使用元組會更快
總結(jié)
以上是生活随笔為你收集整理的【Python】Python入门:4000字能把元组tuple讲透吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dataTable删除行
- 下一篇: 深度学习初学者必备资料整理