国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Python 進(jìn)階之路 (三) Tuple元組使用指南

1fe1se / 2765人閱讀

摘要:返回元組中元素最大值。將列表轉(zhuǎn)換為元組。如果相對(duì)元組排序,通常先得將它轉(zhuǎn)換為列表并使其成為一個(gè)可變對(duì)象,才能獲得使用排序方法,或使用內(nèi)置方法。

比List更安全的數(shù)據(jù)類(lèi)型

大家好,今天為大家介紹一種更為安全的Python內(nèi)置數(shù)據(jù)類(lèi)型:tuple(元組),以及它的基礎(chǔ)用法

元組是什么

元組(tuple)是另一種有序的數(shù)據(jù)類(lèi)型,與list比較類(lèi)似。主要不同的一點(diǎn)是tuple被創(chuàng)建后就不能對(duì)其進(jìn)行修改。所以,tuple與list不同,沒(méi)有append(),pop(),insert()這些方法可以使用。獲取元素的方法和list是一樣的,可以通過(guò)索引來(lái)訪(fǎng)問(wèn)(也是從0開(kāi)始的),只不過(guò)不能賦值成為其他的元素。

因?yàn)?tuple不可變,所以代碼更安全。如果可以的話(huà),我們盡量使用tuple代替list。

創(chuàng)建元組
# 定義一個(gè)空的tuple
t = ()
print(t)
Out:()

只有1個(gè)元素的元組在進(jìn)行定義的時(shí)候,需要加一個(gè)逗號(hào) , 來(lái)消除歧義,否則定義的就不是一個(gè)元組而是元素本身

t1 = (5)
t2 = (5, )
print(t1)
print(t2)

Out: 5
    (5,)
tup4 = (1, 2, 3, 4, 5 );          # 創(chuàng)建時(shí)直接賦值
tup5 = "a", "b", "c", "d";        # 創(chuàng)建時(shí)直接賦值
print(tup4)
print(tup5)

Out:(1, 2, 3, 4, 5)
     ("a", "b", "c", "d")

一旦創(chuàng)建完,比如tup4 和 tup5 這兩個(gè)tuple不能變了,它也沒(méi)有append(),insert()這樣的方法。其他獲取元素的方法和List是一樣的,我們可以正常地使用tup4[0],tup5[-1],但不能賦值成另外的元素

訪(fǎng)問(wèn)元組

訪(fǎng)問(wèn)元組和List基本一樣,我們可以用切片很容易的查看元組中的元素,這里不多說(shuō),看個(gè)小栗子:

tup4 = (1, 2, 3, 4, 5 );
tup5 = "a", "b", "c", "d";
print(tup4[0])
print(tup5[1:3])
print(tup5[::-1])
print(sorted(tup5,reverse=True))   # 使用sorted結(jié)果變成了List

Out: 1
    ("b", "c")
    ("d", "c", "b", "a")
    ["d", "c", "b", "a"]
理解元組的不可變

上面已經(jīng)說(shuō)過(guò)了,元組是不可變的,讓我們來(lái)看下面這個(gè)小栗子:

    test=("a","b",[1,2,3])
    print(test)
    test[2][0]=100
    print(test)

Out: ("a", "b", [1, 2, 3])
     ("a", "b", [100, 2, 3])

不知道有沒(méi)有朋友會(huì)有疑問(wèn)? 你不是說(shuō)元組不能變嘛,這里怎么回事,test元組的第三個(gè)元素是List,這里我們修改了List的值結(jié)果不是變了嗎?

這里要給大家說(shuō)明一下,tuple不可變指的是指向不變,也就是說(shuō)test[2]永遠(yuǎn)指向List[1,2,3],這里是因?yàn)長(zhǎng)ist可變,所以我們才能修改為[100,2,3],但是改變前后test[2]的指向沒(méi)有發(fā)生任何變化,如果我們想要直接改變test[2]的值,就會(huì)發(fā)現(xiàn)如下錯(cuò)誤

test[2]=[100,2,3]
Out: TypeError: "tuple" object does not support item assignment

理解了“指向不變”后,如果我們需要?jiǎng)?chuàng)建一個(gè)內(nèi)容也不變的tuple怎么做?那就必須保證tuple的每一個(gè)元素本身也不能變。

元組的連接

如前面所說(shuō),元組是不可改的,但是可以連接,我們可以使用 + 對(duì)元組進(jìn)行連接:

t1 = (2,3,5)
t2 = ("ricequant","python")
t3 = t1 + t2
print(t3)
Out:(2, 3, 5, "ricequant", "python")
元組的刪除

元組中的元素不能被刪除,但是我們可以使用 del 刪除整個(gè)元組,刪除后可以重新定義,非常簡(jiǎn)單,不多說(shuō)啦

person = ("xiaobai",18,"paris")
print(person)
del person
print(person)

Out: ("xiaobai", 18, "paris")
     NameError: name "person" is not defined
元組的解包
這里是比較有意思的地方,假設(shè)我們有一個(gè)元組t如下:
t = ("foo", "bar", "baz", "qux")

當(dāng)我們創(chuàng)建 t 時(shí),實(shí)際上就是一個(gè)打包,過(guò)程展示如下圖:

那如果是解包呢? 換過(guò)來(lái)就行了呀

t = ("foo", "bar", "baz", "qux")
(s1, s2, s3, s4) = t
print(s1,s2,s3,s4)

Out:foo bar baz qux

當(dāng)我們執(zhí)行(s1, s2, s3, s4) = t的時(shí)候,實(shí)際發(fā)生的情況如下:

這里注意一點(diǎn),如果我們嘗試解包一個(gè)元祖是傳遞的變量和元組實(shí)際元素?cái)?shù)量不相符時(shí)會(huì)產(chǎn)生錯(cuò)誤:

(s1, s2, s3) = t
ValueError: too many values to unpack (expected 3)

(s1, s2, s3, s4, s5) = t
ValueError: not enough values to unpack (expected 5, got 4)
元組的互換swap

其實(shí)Python里面還有一種非常簡(jiǎn)單的創(chuàng)建元組的方法,那就是逗號(hào),我們?nèi)绻枚禾?hào)分隔一些元素,會(huì)自動(dòng)生成一個(gè)元組:

a = "foo"
b = "bar"
x= a, b
print(x)

Out:("foo", "bar")

如果做一個(gè)簡(jiǎn)單的互換很容易,只要這樣就可以了:

x= b,a
print(x)
Out:("bar", "foo")
元組的常用方法匯總

tup.index(x, [start, [stop]])) 返回元組中start到stop索引中第一個(gè)值為 x的元素在整個(gè)列表中的索引。如果沒(méi)有匹配的元素就會(huì)返回一個(gè)錯(cuò)誤。

tup.count(x) 返回 x 在元組中出現(xiàn)的次數(shù)。

cmp(tuple1, tuple2) 比較元組中兩個(gè)元素。

len(tuple) 計(jì)算元組元素個(gè)數(shù)。

max(tuple) 返回元組中元素最大值。

min(tuple) 返回元組中元素最小值。

tuple(seq) 將列表轉(zhuǎn)換為元組。

元組不提供字符串、列表和字典中的方法。如果相對(duì)元組排序,通常先得將它轉(zhuǎn)換為列表并使其成為一個(gè)可變對(duì)象,才能獲得使用排序方法,或使用sorted內(nèi)置方法。

總結(jié)

今天為大家講解了我知道的有關(guān)tuple的一切,也為大家展示了一些常規(guī)操作,希望能夠幫助到大家,馬上就要到初五了,迎財(cái)神,吃餃子!!! 希望大家在2019大吉大利,大發(fā)橫財(cái)!!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43150.html

相關(guān)文章

  • Python 進(jìn)階之路 (七) 隱藏的神奇寶藏:探秘Collections

    摘要:它需要一個(gè)函數(shù)默認(rèn)工廠(chǎng)作為其參數(shù)。默認(rèn)情況下設(shè)置為,即如果鍵不存在則為,并返回并顯示默認(rèn)值。因此,它是一個(gè)無(wú)序集合,其中元素及其各自的計(jì)數(shù)存儲(chǔ)為字典。這相當(dāng)于其他語(yǔ)言的或。使用,我們不必使用整數(shù)索引來(lái)訪(fǎng)問(wèn)元組的成員。 神奇的collections 大家好,今天想和大家分享一個(gè)Python里面非常棒的模快:Collections 該模塊實(shí)現(xiàn)了專(zhuān)門(mén)的容器數(shù)據(jù)類(lèi)型,為Python的通用內(nèi)置容...

    rickchen 評(píng)論0 收藏0
  • Python 進(jìn)階之路 (五) map, filter, reduce, zip 一網(wǎng)打盡

    摘要:另外,這些中的每一個(gè)都是純函數(shù),有返回值。例如,如果要計(jì)算整數(shù)列表的累積乘,或者求和等等基礎(chǔ)語(yǔ)法參數(shù)是連續(xù)作用于每一個(gè)元素的方法,新的參數(shù)為上一次執(zhí)行的結(jié)果,為被過(guò)濾的可迭代序列返回值最終的返回結(jié)果在中,是一個(gè)內(nèi)置函數(shù)。 簡(jiǎn)潔的內(nèi)置函數(shù) 大家好,我又回來(lái)了,今天我想和大家分享的是Python非常重要的幾個(gè)內(nèi)置函數(shù):map,filter,reduce, zip。它們都是處理序列的便捷函數(shù)...

    ccj659 評(píng)論0 收藏0
  • Python 進(jìn)階之路 (十一) 再立Flag, 社區(qū)最全的itertools深度解析(下)

    摘要:將每一行作為返回,其中是每行中的列名。對(duì)于每一行,都會(huì)生成一個(gè)對(duì)象,其中包含和列中的值。它返回一個(gè)迭代器,是迭代結(jié)果都為的情況。深度解析至此全劇終。 簡(jiǎn)單實(shí)戰(zhàn) 大家好,我又來(lái)了,在經(jīng)過(guò)之前兩篇文章的介紹后相信大家對(duì)itertools的一些常見(jiàn)的好用的方法有了一個(gè)大致的了解,我自己在學(xué)完之后仿照別人的例子進(jìn)行了真實(shí)場(chǎng)景下的模擬練習(xí),今天和大家一起分享,有很多部分還可以?xún)?yōu)化,希望有更好主意...

    tomorrowwu 評(píng)論0 收藏0
  • Python 進(jìn)階之路 (一) List 進(jìn)階方法匯總,新年快樂(lè)!

    摘要:嘗射于家圃,有賣(mài)油翁釋擔(dān)而立,睨之,久而不去。康肅問(wèn)曰汝亦知射乎吾射不亦精乎翁曰無(wú)他,但手熟爾。康肅忿然曰爾安敢輕吾射翁曰以我酌油知之。 開(kāi)啟變身模式 大家好, 從這一期開(kāi)始,我們會(huì)從小白變身為中等小白,在基礎(chǔ)起步階段有太多的東西我沒(méi)有講到,但是俗話(huà)說(shuō)的好,無(wú)他,但手熟爾,只要多多練習(xí),時(shí)間會(huì)是最好的證明,相信我們終有一天會(huì)成為高手,因此從這一系列開(kāi)始,讓我們一起更上一層樓,還是和往常...

    garfileo 評(píng)論0 收藏0
  • Python學(xué)習(xí)之路3-操作列表

    摘要:本章內(nèi)容主要是對(duì)列表的進(jìn)一步操作,以及初識(shí)元組數(shù)據(jù)結(jié)構(gòu)。列表非常適合用于存儲(chǔ)在程序運(yùn)行期間可能變化的數(shù)據(jù)集,列表可以被修改。代碼結(jié)果相比于列表,元組是更簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)。 《Python編程:從入門(mén)到實(shí)踐》筆記。本章內(nèi)容主要是對(duì)列表的進(jìn)一步操作,以及初識(shí)元組數(shù)據(jù)結(jié)構(gòu)。 1. 遍歷列表 本章主要是for循環(huán): # 代碼: magicians = [alice, david, carolin...

    makeFoxPlay 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<