在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 元組
標(biāo)準(zhǔn)庫(kù) (4)
如何成為 Python 高手
標(biāo)準(zhǔn)庫(kù) (6)
標(biāo)準(zhǔn)庫(kù) (3)
類(2)
Pandas 使用 (2)
xml
用 tornado 做網(wǎng)站 (5)
文件(1)
練習(xí)
列表(3)
從小工到專家
除法
錯(cuò)誤和異常 (2)
函數(shù)(1)
用 tornado 做網(wǎng)站 (7)
為做網(wǎng)站而準(zhǔn)備
函數(shù)練習(xí)
標(biāo)準(zhǔn)庫(kù) (8)
Pandas 使用 (1)
回顧 list 和 str
字典(1)
用 tornado 做網(wǎng)站 (3)
字符串(1)
函數(shù)(2)
寫一個(gè)簡(jiǎn)單的程序
將數(shù)據(jù)存入文件
語(yǔ)句(5)
SQLite 數(shù)據(jù)庫(kù)
集成開(kāi)發(fā)環(huán)境(IDE)
集合(1)
類(1)
用 tornado 做網(wǎng)站 (6)
用 tornado 做網(wǎng)站 (2)
自省
語(yǔ)句(4)
錯(cuò)誤和異常 (1)
用 tornado 做網(wǎng)站 (4)
集合(2)
列表(1)
標(biāo)準(zhǔn)庫(kù) (1)
生成器
mysql 數(shù)據(jù)庫(kù) (1)
第三方庫(kù)
實(shí)戰(zhàn)
運(yùn)算符
類(3)
字典(2)
語(yǔ)句(1)
數(shù)和四則運(yùn)算
語(yǔ)句(2)
文件(2)
MySQL 數(shù)據(jù)庫(kù) (2)
電子表格
迭代器
mongodb 數(shù)據(jù)庫(kù) (1)
特殊方法 (2)
特殊方法 (1)
字符編碼
編寫模塊
用 tornado 做網(wǎng)站 (1)
標(biāo)準(zhǔn)庫(kù) (5)
函數(shù)(4)
類(5)
字符串(2)
關(guān)于 Python 的故事
函數(shù)(3)
字符串(4)
處理股票數(shù)據(jù)
常用數(shù)學(xué)函數(shù)和運(yùn)算優(yōu)先級(jí)
字符串(3)
為計(jì)算做準(zhǔn)備
多態(tài)和封裝
類(4)
迭代
語(yǔ)句(3)
錯(cuò)誤和異常 (3)
分析 Hello
Python 安裝
標(biāo)準(zhǔn)庫(kù) (2)
列表(2)
元組

元組

定義

先看一個(gè)例子:

>>># 變量引用 str
>>> s = "abc"
>>> s
'abc'

>>>#如果這樣寫,就會(huì)是...
>>> t = 123,'abc',["come","here"]
>>> t
(123, 'abc', ['come', 'here'])

上面例子中看到的變量 t,并沒(méi)有報(bào)錯(cuò),也沒(méi)有“最后一個(gè)有效”,而是將對(duì)象做為一個(gè)新的數(shù)據(jù)類型:tuple(元組),賦值給了變量 t。

元組是用圓括號(hào)括起來(lái)的,其中的元素之間用逗號(hào)隔開(kāi)。(都是英文半角)

元組中的元素類型是任意的 Python 數(shù)據(jù)。

這種類型,可以歪著想,所謂“元”組,就是用“圓”括號(hào)啦。

其實(shí),你不應(yīng)該對(duì)元組陌生,還記得前面講述字符串的格式化輸出時(shí),有這樣一種方式:

print "I love %s, and I am a %s" % ('python', 'programmer') I love Python, and I am a programmer

這里的圓括號(hào),就是一個(gè)元組。

顯然,tuple 是一種序列類型的數(shù)據(jù),這點(diǎn)上跟 list/str 類似。它的特點(diǎn)就是其中的元素不能更改,這點(diǎn)上跟 list 不同,倒是跟 str 類似;它的元素又可以是任何類型的數(shù)據(jù),這點(diǎn)上跟 list 相同,但不同于 str。

>>> t = 1,"23",[123,"abc"],("python","learn")   #元素多樣性,近 list
>>> t
(1, '23', [123, 'abc'], ('python', 'learn'))

>>> t[0] = 8                                   #不能原地修改,近 str
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

>>> t.append("no")  
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
    >>> 

從上面的簡(jiǎn)單比較似乎可以認(rèn)為,tuple 就是一個(gè)融合了部分 list 和部分 str 屬性的雜交產(chǎn)物。此言有理。

索引和切片

因?yàn)榍懊嬗辛岁P(guān)于列表和字符串的知識(shí),它們都是序列類型,元組也是。因此,元組的基本操作就和它們是一樣的。

例如:

>>> t
(1, '23', [123, 'abc'], ('python', 'learn'))
>>> t[2]
[123, 'abc']
>>> t[1:]
('23', [123, 'abc'], ('python', 'learn'))

>>> t[2][0]     #還能這樣呀,哦對(duì)了,list 中也能這樣
123
>>> t[3][1]
'learn'

關(guān)于序列的基本操作在 tuple 上的表現(xiàn),就不一一展示了??垂倏梢匀ピ囋嚒?/p>

但是這里要特別提醒,如果一個(gè)元組中只有一個(gè)元素的時(shí)候,應(yīng)該在該元素后面加一個(gè)半角的英文逗號(hào)。

>>> a = (3)
>>> type(a)
<type 'int'>

>>> b = (3,)
>>> type(b)
<type 'tuple'>

以上面的例子說(shuō)明,如果不加那個(gè)逗號(hào),就不是元組,加了才是。這也是為了避免讓 Python 誤解你要表達(dá)的內(nèi)容。

順便補(bǔ)充:如果要想看一個(gè)對(duì)象是什么類型,可以使用 type()函數(shù),然后就返回該對(duì)象的類型。

所有在 list 中可以修改 list 的方法,在 tuple 中,都失效。

分別用 list()和 tuple()能夠?qū)崿F(xiàn)兩者的轉(zhuǎn)化:

>>> t         
(1, '23', [123, 'abc'], ('python', 'learn'))
>>> tls = list(t)                           #tuple-->list
>>> tls
[1, '23', [123, 'abc'], ('python', 'learn')]

>>> t_tuple = tuple(tls)                    #list-->tuple
>>> t_tuple
(1, '23', [123, 'abc'], ('python', 'learn'))

tuple 用在哪里?

既然它是 list 和 str 的雜合,它有什么用途呢?不是用 list 和 str 都可以了嗎?

在很多時(shí)候,的確是用 list 和 str 都可以了。但是,看官不要忘記,我們用計(jì)算機(jī)語(yǔ)言解決的問(wèn)題不都是簡(jiǎn)單問(wèn)題,就如同我們的自然語(yǔ)言一樣,雖然有的詞匯看似可有可無(wú),用別的也能替換之,但是我們依然需要在某些情況下使用它們.

一般認(rèn)為,tuple 有這類特點(diǎn),并且也是它使用的情景:

  • Tuple 比 list 操作速度快。如果您定義了一個(gè)值的常量集,并且唯一要用它做的是不斷地遍歷它,請(qǐng)使用 tuple 代替 list。
  • 如果對(duì)不需要修改的數(shù)據(jù)進(jìn)行 “寫保護(hù)”,可以使代碼更安全。使用 tuple 而不是 list 如同擁有一個(gè)隱含的 assert 語(yǔ)句,說(shuō)明這一數(shù)據(jù)是常量。如果必須要改變這些值,則需要執(zhí)行 tuple 到 list 的轉(zhuǎn)換 (需要使用一個(gè)特殊的函數(shù))。
  • Tuples 可以在 dictionary(字典,后面要講述) 中被用做 key,但是 list 不行。Dictionary key 必須是不可變的。Tuple 本身是不可改變的,但是如果您有一個(gè) list 的 tuple,那就認(rèn)為是可變的了,用做 dictionary key 就是不安全的。只有字符串、整數(shù)或其它對(duì) dictionary 安全的 tuple 才可以用作 dictionary key。
  • Tuples 可以用在字符串格式化中。

總目錄   |   上節(jié):回顧 list 和 str   |   下節(jié):字典(1)

如果你認(rèn)為有必要打賞我,請(qǐng)通過(guò)支付寶:qiwsir@126.com,不勝感激。