【Python基础入门系列】第09天:Python tuple
Python 中的數(shù)據(jù)結(jié)構(gòu)是通過(guò)某種方式組織在一起的數(shù)據(jù)元素的集合,這些數(shù)據(jù)元素可以是數(shù)字、字符、甚至可以是其他數(shù)據(jù)結(jié)構(gòu) 在 Python 中,最基本的數(shù)據(jù)結(jié)構(gòu)是序列(在前面文章我們也說(shuō)過(guò)序列),序列中的每個(gè)元素都有一個(gè)序號(hào)(元素的具體位置),這個(gè)序號(hào)叫索引,索引下標(biāo)從0開(kāi)始,以此類(lèi)推......Python 的元組與列表類(lèi)似,不同之處在于元組的元素不能修改。
?
?
tuple 元組()
tuple和list非常類(lèi)似,但是tuple一旦初始化就不能修改,比如同樣是列出名字:
>>> classmates = ('劉旺', '學(xué)長(zhǎng)', 'allen')現(xiàn)在,classmates這個(gè)tuple不能變了,它也沒(méi)有append(),insert()這樣的方法。其他獲取元素的方法和list是一樣的,你可以正常地使用classmates[0],classmates[-1],但不能賦值成另外的元素。
不可變的tuple有什么意義?因?yàn)閠uple不可變,所以代碼更安全。如果可能,能用tuple代替list就盡量用tuple。
tuple的陷阱:當(dāng)你定義一個(gè)tuple時(shí),在定義的時(shí)候,tuple的元素就必須被確定下來(lái),比如:
>>> t = (1, 2) >>> t (1, 2)如果要定義一個(gè)空的tuple,可以寫(xiě)成():
>>> t = () >>> t ()但是,要定義一個(gè)只有1個(gè)元素的tuple,如果你這么定義就錯(cuò):
>>> t = (1) >>> t 1定義的不是tuple,是1這個(gè)數(shù)!這是因?yàn)槔ㄌ?hào)()既可以表示tuple,又可以表示數(shù)學(xué)公式中的小括號(hào),這就產(chǎn)生了歧義,因此,Python規(guī)定,這種情況下,按小括號(hào)進(jìn)行計(jì)算,計(jì)算結(jié)果自然是1。
所以,只有1個(gè)元素的tuple定義時(shí)必須加一個(gè)逗號(hào),,來(lái)消除歧義:
>>> t = (1,) >>> t (1,)Python在顯示只有1個(gè)元素的tuple時(shí),也會(huì)加一個(gè)逗號(hào),,以免你誤解成數(shù)學(xué)計(jì)算意義上的括號(hào)。
最后來(lái)看一個(gè)“可變的”tuple:
>>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2][1] = 'Y' >>> t ('a', 'b', ['X', 'Y'])這個(gè)tuple定義的時(shí)候有3個(gè)元素,分別是'a','b'和一個(gè)list。不是說(shuō)tuple一旦定義后就不可變了嗎?怎么后來(lái)又變了?
別急,我們先看看定義的時(shí)候tuple包含的3個(gè)元素:
當(dāng)我們把list的元素'A'和'B'修改為'X'和'Y'后,tuple變?yōu)?#xff1a;
表面上看,tuple的元素確實(shí)變了,但其實(shí)變的不是tuple的元素,而是list的元素。tuple一開(kāi)始指向的list并沒(méi)有改成別的list,所以,tuple所謂的“不變”是說(shuō),tuple的每個(gè)元素,指向永遠(yuǎn)不變。即指向'a',就不能改成指向'b',指向一個(gè)list,就不能改成指向其他對(duì)象,但指向的這個(gè)list本身是可變的!
理解了“指向不變”后,要?jiǎng)?chuàng)建一個(gè)內(nèi)容也不變的tuple怎么做?那就必須保證tuple的每一個(gè)元素本身也不能變。
?
總結(jié)
本節(jié)給大家介紹了 Python 數(shù)據(jù)結(jié)構(gòu)之元組的操作與使用,對(duì) Python 工程師使用列表提供了支撐。Python的元組與列表類(lèi)似,不同之處在于元組的元素不能修改。元組使用小括號(hào),列表使用方括號(hào)。元組創(chuàng)建很簡(jiǎn)單,只需要在括號(hào)中添加元素,并使用逗號(hào)隔開(kāi)即可。
參考:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017092876846880
https://www.runoob.com/python3/python3-tuple.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的【Python基础入门系列】第09天:Python tuple的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 算法竞赛入门经典第二版 2-6排列
- 下一篇: websocket python爬虫_p