Python元組 tuple的概念與基本操作詳解【定義、創(chuàng)建、訪問(wèn)、計(jì)數(shù)、推導(dǎo)式等】
本文實(shí)例講述了Python元組 tuple的概念與基本操作。分享給大家供大家參考,具體如下:
元組 tuple
元組 tuple的定義
列表屬于可變序列,可以任意修改列表中的元素。元組屬于不可變序列,不能修改元組中的
元素。因此,元組沒(méi)有增加元素、修改元素、刪除元素相關(guān)的方法。
因此,我們只需要學(xué)習(xí)元組的創(chuàng)建和刪除,元組中元素的訪問(wèn)和計(jì)數(shù)即可。元組支持如
下操作:
- 索引訪問(wèn)
- 切片操作
- 連接操作
- 成員關(guān)系操作
- 比較運(yùn)算操作
- 計(jì)數(shù):元組長(zhǎng)度 len()、最大值 max()、最小值 min()、求和 sum()等。
元組的創(chuàng)建
- 通過(guò)()創(chuàng)建元組。小括號(hào)可以省略。
a = (10,20,30) 或者 a = 10,20,30
如果元組只有一個(gè)元素,則必須后面加逗號(hào)。這是因?yàn)榻忉屍鲿?huì)把(1)解釋為整數(shù) 1,(1,)
解釋為元組。
>>> a = (1) >>> type(a) <class 'int'> >>> a = (1,) #或者 a = 1, >>> type(a) <class 'tuple'>
- 通過(guò) tuple()創(chuàng)建元組
tuple(可迭代的對(duì)象)
例如:
b = tuple() #創(chuàng)建一個(gè)空元組對(duì)象 b = tuple("abc") b = tuple(range(3)) b = tuple([2,3,4])
總結(jié):
tuple()可以接收列表、字符串、其他序列類(lèi)型、迭代器等生成元組。
list()可以接收元組、字符串、其他序列類(lèi)型、迭代器等生成列表。
元組的元素訪問(wèn)和計(jì)數(shù)
1. 元組的元素不能修改
>>> a = (20,10,30,9,8) >>> a[3]=33 Traceback (most recent call last): File "<pyshell#313>", line 1, in <module> a[3]=33 TypeError: 'tuple' object does not support item assignment
2. 元組的元素訪問(wèn)和列表一樣,只不過(guò)返回的仍然是元組對(duì)象。
>>> a = (20,10,30,9,8) >>> a[1] 10 >>> a[1:3] (10, 30) >>> a[:4] (20, 10, 30, 9)
3. 列表關(guān)于排序的方法 list.sorted()是修改原列表對(duì)象,元組沒(méi)有該方法。如果要對(duì)元組排
序,只能使用內(nèi)置函數(shù) sorted(tupleObj),并生成新的列表對(duì)象。
>>> a = (20,10,30,9,8) >>> sorted(a) [8, 9, 10, 20, 30]
zip
zip(列表 1,列表 2,…)將多個(gè)列表對(duì)應(yīng)位置的元素組合成為元組,并返回這個(gè) zip 對(duì)象。
>>> a = [10,20,30] >>> b = [40,50,60] >>> c = [70,80,90] >>> d = zip(a,b,c) >>> list(d) [(10, 40, 70), (20, 50, 80), (30, 60, 90)]
生成器推導(dǎo)式創(chuàng)建元組
從形式上看,生成器推導(dǎo)式與列表推導(dǎo)式類(lèi)似,只是生成器推導(dǎo)式使用小括號(hào)。列表推
導(dǎo)式直接生成列表對(duì)象,生成器推導(dǎo)式生成的不是列表也不是元組,而是一個(gè)生成器對(duì)象。
我們可以通過(guò)生成器對(duì)象,轉(zhuǎn)化成列表或者元組。也可以使用生成器對(duì)象的__next__()
方法進(jìn)行遍歷,或者直接作為迭代器對(duì)象來(lái)使用。不管什么方式使用,元素訪問(wèn)結(jié)束后,如
果需要重新訪問(wèn)其中的元素,必須重新創(chuàng)建該生成器對(duì)象。
【操作】生成器的使用測(cè)試
>>> s = (x*2 for x in range(5)) >>> s <generator object <genexpr> at 0x0000000002BDEB48> >>> tuple(s) (0, 2, 4, 6, 8) >>> list(s) #只能訪問(wèn)一次元素。第二次就為空了。需要再生成一次 [] >>> s <generator object <genexpr> at 0x0000000002BDEB48> >>> tuple(s) () >>> s = (x*2 for x in range(5)) >>> s.__next__() 0 >>> s.__next__() 2 >>> s.__next__() 4
元組總結(jié)
- 元組的核心特點(diǎn)是:不可變序列。
- 元組的訪問(wèn)和處理速度比列表快。
- 與整數(shù)和字符串一樣,元組可以作為字典的鍵,列表則永遠(yuǎn)不能作為字典的鍵使用。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python函數(shù)使用技巧總結(jié)》、《Python列表(list)操作技巧總結(jié)》、《Python字典操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python cv2截取不規(guī)則區(qū)域圖片實(shí)例
今天小編就為大家分享一篇python cv2截取不規(guī)則區(qū)域圖片實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12使用Python進(jìn)行Ping測(cè)試的操作指南
在網(wǎng)絡(luò)工程中,Ping測(cè)試是一種常用的網(wǎng)絡(luò)診斷工具,用于檢查網(wǎng)絡(luò)連接的可達(dá)性和響應(yīng)時(shí)間,隨著Python編程語(yǔ)言的廣泛應(yīng)用,越來(lái)越多的網(wǎng)絡(luò)工程師開(kāi)始使用Python進(jìn)行自動(dòng)化網(wǎng)絡(luò)測(cè)試和管理任務(wù),本篇文章將詳細(xì)介紹如何使用Python進(jìn)行Ping測(cè)試,需要的朋友可以參考下2024-06-06python 根據(jù)列表批量下載網(wǎng)易云音樂(lè)的免費(fèi)音樂(lè)
這篇文章主要介紹了python 根據(jù)列表下載網(wǎng)易云音樂(lè)的免費(fèi)音樂(lè),幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-12-12python3.6.8 + pycharm + PyQt5 環(huán)境搭建的圖文教程
這篇文章主要介紹了python3.6.8 + pycharm + PyQt5 環(huán)境搭建,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Python 自制簡(jiǎn)單版《我的世界》的詳細(xì)過(guò)程
這篇文章主要介紹了教你用 Python 自制簡(jiǎn)單版《我的世界》,接下來(lái),我們就帶你運(yùn)行這個(gè)項(xiàng)目,并對(duì)這個(gè)開(kāi)源的小游戲做一下簡(jiǎn)單的更改,讓它變成“你的”世界2021-11-11Python爬蟲(chóng)與反爬蟲(chóng)大戰(zhàn)
這篇文章主要介紹了Python爬蟲(chóng)與反爬蟲(chóng)的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解Python爬蟲(chóng)與反爬蟲(chóng)的關(guān)系,感興趣的朋友可以了解下2020-07-07Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級(jí)隊(duì)列queue用法詳解
queue庫(kù)提供了一個(gè)適用于多線程編程的先進(jìn)先出(FIFO)數(shù)據(jù)結(jié)構(gòu),可以用來(lái)在生產(chǎn)者與消費(fèi)者線程之間安全地傳遞消息或其他數(shù)據(jù),它會(huì)為調(diào)用者處理鎖定,使多個(gè)線程可以安全而更容易地處理同一個(gè)Queue實(shí)例.Queue的大小可能受限,以限制內(nèi)存使用或處理,需要的朋友可以參考下2021-05-05