python 元組(tuple)和列表(list)區(qū)別

一碟狞、前言

想必大家都知道,在Python數(shù)據(jù)類型中有兩個對象:元組 tuple 和列表 list 婚陪。

它們的寫法和用法都十分相似族沃,傻傻分不清楚。可能有的同學(xué)就會瘋狂的去網(wǎng)上查找它們之間的區(qū)別了脆淹,可是查到的無外乎有以下幾種說法:

list 是可變的對象常空,元組 tuple 是不可變的對象!
由于 tuple 不可變盖溺,所以使用 tuple 可以使代碼更安全漓糙!等等 ...
但是 tuple 究竟有什么用呢,到頭來還是不知道。

二椅棺、tuple
其實(shí)在很多比較“資深”的編程語言里開始是沒有元組的妇智,比如:Java、C++为狸、C# 等,但是由于元組的靈活和便捷性遗契,最后這些編程語言也都紛紛加上了辐棒。并且很多年輕的編程語言 Python、Scala 等牍蜂,一開始就內(nèi)置了元組類型漾根。

之所以元組這么受歡迎,其實(shí)最關(guān)鍵的一點(diǎn)是它的語法的靈活和便捷性鲫竞,提高了編程體驗(yàn)辐怕。其中最大的一個特性就是使函數(shù)可以返回多個值,這個特性很常用从绘。

  1. 函數(shù)返回(return)多個值
    函數(shù)返回多個值寄疏?對,你沒有聽錯僵井。函數(shù)是可以返回多個值的陕截。如:


    image.png

非常簡單,就是一個返回坐標(biāo)值(x , y)的函數(shù)批什,我們同時獲取了多個值 x 和 y 农曲。

但是這和 tuple元組有什么關(guān)系了?

其實(shí)這里存在一個假象驻债,Python函數(shù)返回的值本質(zhì)上還是一個單值乳规,看下面代碼:


image.png

從打印結(jié)果可以看出,這里返回值就是一個tuple合呐!由于在語法上驯妄,返回一個tuple是可以省略括號的,而多個變量可以同時接收一個tuple合砂,按位置賦給對應(yīng)的值青扔。

所以源织,Python的函數(shù)返回多值時,其實(shí)就是返回一個tuple微猖。是不是突然覺得 tuple 幫了大忙谈息,使結(jié)果的獲取更簡單了呢?

  1. tuple 不可變的好處

相對于 list 而言凛剥,tuple 是不可變的侠仇,這使得它可以作為 dict 的 key,或者扔進(jìn) set 里犁珠,而 list 則不行逻炊。

tuple 放棄了對元素的增刪(內(nèi)存結(jié)構(gòu)設(shè)計(jì)上變的更精簡),換取的是性能上的提升:創(chuàng)建 tuple 比 list 要快犁享,存儲空間比 list 占用更小余素。所以就出現(xiàn)了“能用 tuple 的地方就不用 list”的說法。

多線程并發(fā)的時候炊昆,tuple 是不需要加鎖的桨吊,不用擔(dān)心安全問題,編寫也簡單多了凤巨。
二视乐、元組到底可不可以被修改

1、創(chuàng)建和訪問一個元組如果創(chuàng)建一個空元組敢茁,直接使用小括號即可佑淀;
如果要創(chuàng)建的元組中只有一個元素,要在它的后面加上一個逗號‘彰檬,’伸刃。

>>> temp = ()
>>> type(temp)
       <class 'tuple'>
>>> temp = (1,)
>>> type(temp)
      <class 'tuple'>
>>> temp = (1)
>>> type(temp)
      <class 'int'>
>>> 8 * (8)
      64
>>> 8 * (8,)
      (8, 8, 8, 8, 8, 8, 8, 8)

元組里只有一個元素的時候,逗號(僧叉,)非常重要

2奕枝、更新和刪除元組

直接在同一個元組上更新是不可行的棺榔,但是可以通過拷貝現(xiàn)有的元組片段構(gòu)造一個新的元組的方式解決瓶堕。
通過分片的方法讓元組拆分成兩部分,然后再使用連接操作符(+)合并成一個新元組症歇,最后將原來的變量名(temp)指向連接好的新元組郎笆。在這里就要注意了,逗號是必須的忘晤,小括號也是必須的宛蚓!

 __author__ = 'Administrator'
     
# -*- coding:utf-8 -*-
     
temp = ("龍貓","泰迪","叮當(dāng)貓")
temp = temp[:2] + ("小豬佩奇",)+temp[2:]
print(temp)
"""
('龍貓', '泰迪', '小豬佩奇', '叮當(dāng)貓')
Process finished with exit code 0
 """

刪除元組中的元素:對于元組是不可變的原則來說,單獨(dú)刪除一個元素是不可能的设塔,當(dāng)然你可以利用切片的方式更新元組凄吏,間接的刪除一個元素。

 __author__ = 'Administrator'
     
# -*- coding:utf-8 -*-
     
temp = ('龍貓', '泰迪', '小豬佩奇', '叮當(dāng)貓')
temp = temp[:2] + temp[3:]
print(temp)
"""
('龍貓', '泰迪', '叮當(dāng)貓')
Process finished with exit code 0
 """

在日常中很少用del去刪除整個元組,因?yàn)镻ython的回收機(jī)制會在這個元組不再被使用的時候自動刪除痕钢。

 __author__ = 'Administrator'
     
# -*- coding:utf-8 -*-
     
temp = ('龍貓', '泰迪', '小豬佩奇', '叮當(dāng)貓')
del temp
print(temp)
"""
Traceback (most recent call last):
File "F:/python_progrom/test.py", line 7, in <module>
print(temp)
NameError: name 'temp' is not defined
Process finished with exit code 0
"""

最后成員關(guān)系操作符 in 和 not in 也可以直接應(yīng)用在元組上图柏,這跟列表是一樣的。

__author__ = 'Administrator'
     
# -*- coding:utf-8 -*-
     
temp = ('龍貓', '泰迪', '小豬佩奇', '叮當(dāng)貓')
a ="泰迪"
c = ('泰迪', '小豬佩奇')
b = a in temp
d =c in temp
f =c not in temp
print(b)
print(d)
print(f)
"""
True
False
True
Process finished with exit code 0
"""

CSDN博主「阿紫_PP」的原創(chuàng)文章原文鏈接:https://blog.csdn.net/ruanxingzi123/article/details/83184909

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末任连,一起剝皮案震驚了整個濱河市蚤吹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌随抠,老刑警劉巖裁着,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拱她,居然都是意外死亡二驰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門椭懊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诸蚕,“玉大人,你說我怎么就攤上這事氧猬”撤福” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵盅抚,是天一觀的道長漠魏。 經(jīng)常有香客問我,道長妄均,這世上最難降的妖魔是什么柱锹? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮丰包,結(jié)果婚禮上禁熏,老公的妹妹穿的比我還像新娘。我一直安慰自己邑彪,他們只是感情好瞧毙,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寄症,像睡著了一般宙彪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上有巧,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天释漆,我揣著相機(jī)與錄音,去河邊找鬼篮迎。 笑死男图,一個胖子當(dāng)著我的面吹牛示姿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逊笆,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼峻凫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了览露?” 一聲冷哼從身側(cè)響起荧琼,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎差牛,沒想到半個月后命锄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡偏化,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年脐恩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侦讨。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡驶冒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出韵卤,到底是詐尸還是另有隱情骗污,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布沈条,位于F島的核電站需忿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蜡歹。R本人自食惡果不足惜屋厘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望月而。 院中可真熱鬧汗洒,春花似錦、人聲如沸父款。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铛漓。三九已至溯香,卻和暖如春鲫构,著一層夾襖步出監(jiān)牢的瞬間浓恶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工结笨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留包晰,地道東北人湿镀。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像伐憾,于是被迫代替她去往敵國和親勉痴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359