久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

UC頭條:深挖 Python 元組 pt.1

 cnzrp 2023-10-09 發(fā)布于山西

哈嘍大家好,,我是咸魚

好久不見甚是想念,,2023年最后一次法定節(jié)假日已經(jīng)結(jié)束了,不知道各位小伙伴是不是跟咸魚一樣今天就開始“搬磚”了呢,?

我們知道元組(tuple)是Python的內(nèi)置數(shù)據(jù)類型,,tuple是一個(gè)不可變的值序列

tuple的元素可以是任何類型,一般用在存儲(chǔ)異構(gòu)數(shù)據(jù)(例如數(shù)據(jù)庫記錄)的場景

那么今天這篇文章將帶大家深入了解一下tuple以及它們的主要功能和示例(原文較長,,我分成幾個(gè)部分去講)

前言

tuple是不可變的,,可以存儲(chǔ)固定數(shù)量的元素(也可以叫項(xiàng)目,item)

例如可以通過tuple來表示笛卡爾坐標(biāo)(x,y),、RGB顏色(red,green,blue)或者數(shù)據(jù)庫表中的記錄(name,age,job)

tuple的一些特點(diǎn)如下:

有序:里面的元素可以按照順序排列

輕量級:與列表等其他序列相比,,tuple消耗的內(nèi)存要少

從零開始索引:可以從零開始索引訪問里面的元素

不可變:不可以改變里面的元素

異構(gòu):可以存儲(chǔ)不同數(shù)據(jù)類型的對象(包括可變對象)

可嵌套:tuple里面可以包含tuple

可迭代:能夠遍歷里面的元素

可切片:可以從元組中提取一系列元素

可組合:支持串聯(lián)操作,可以使用串聯(lián)運(yùn)算符組合多個(gè)元組

可哈希:里面的元素都是不可變時(shí)可以用作字典的鍵

在python中,,tuple是有序的,,這意味著其元素保持原始插入順序,這個(gè)順序在tuple的生命周期內(nèi)保持不變

可以按位置或索引訪問元組中的元素(從零開始)

創(chuàng)建tuple

tuple是以逗號分隔的序列對象,。要在元組中存儲(chǔ)對象,,需要一次創(chuàng)建包含其所有內(nèi)容的元組對象

直接創(chuàng)建

#語法(item_0,item_1,...,item_n)

需要注意的是,括號不是必需的,,逗號才是,。但是在大多數(shù)情況下括號可以提高代碼的可讀性

盡管括號對于定義大多數(shù)tuple不是必需的,但在創(chuàng)建空tuple時(shí)必須包含它們:

因?yàn)閠uple是不可變的,,所以創(chuàng)建空tuple之后無法往里面添加元素,。到這里有小伙伴可能會(huì)問:既然這樣為什么還要?jiǎng)?chuàng)建一個(gè)空tuple?

例如現(xiàn)在有一個(gè)構(gòu)建并返回tuple的函數(shù),,在一些情況下這個(gè)函數(shù)不會(huì)為生成的tuple創(chuàng)建元素,,這樣我們就需要返回一個(gè)空tuple。以此來使得函數(shù)的返回值類型保持一致

除此之外,,下面的情況也需要使用到括號

當(dāng)我們使用%進(jìn)行格式化輸出的時(shí)候:

第一種加括號:使用括在括號中的元組作為%運(yùn)算符的右側(cè)操作數(shù),,按預(yù)期工作

第二種沒加括號:報(bào)錯(cuò)

我們創(chuàng)建單個(gè)元素的tuple

可以看到括號不是必需的,尾隨逗號才是

使用tuple創(chuàng)建

還可以使用tuple從可迭代對象(列表,、集合,、字典或字符串)中創(chuàng)建tuple,,默認(rèn)生成一個(gè)空tuple

通過集合來創(chuàng)建tuple時(shí)需要注意集合是無序的,會(huì)影響生成tuple中的元素的最終順序

如果我們從一個(gè)迭代器對象中創(chuàng)建一個(gè)tuple,,那么tuple函數(shù)會(huì)使用迭代器逐個(gè)生成元素,,然后將這些元素組合成一個(gè)元組并返回

my_list=[1,2,3,4,5]#可迭代對象my_iterator=iter(my_list)#轉(zhuǎn)換為迭代器對象my_iteratormy_tuple=tuple(my_iterator)print(my_tuple)#輸出結(jié)果為:(1,2,3,4,5)

又或者從生成器表達(dá)式中創(chuàng)建tuple,生成器是一種特殊的迭代器

>>>tuple(x**2forxinrange(10))(0,1,4,9,16,25,36,49,64,81)

tuple索引和切片

tuple中每一個(gè)元素都有一個(gè)整數(shù)索引,,用于指定其在元組中的位置,,索引從0開始

點(diǎn)擊加載圖片

用不同的索引為tuple建立索引,可以直接訪問相關(guān)的值,。如果使用大O符號表示時(shí)間復(fù)雜度,,那么可以說索引是一個(gè)O(1)操作

這意味著tuple非常適合需要快速訪問序列中的特定項(xiàng)的情況

len函數(shù)返回tuple長度

>>>len(jane)4

如果使用大于或等于tuple長度的索引,則會(huì)報(bào)錯(cuò)

>>>jane[4]Traceback(mostrecentcalllast):...IndexError:tupleindexoutofrange

還可以使用負(fù)索引,,負(fù)索引從右端開始數(shù)起

負(fù)索引對于所有Python序列(例如列表和字符串)都是通用的

點(diǎn)擊加載圖片

如果使用負(fù)索引,,則-len(tuple_object)將成為元組中的第一項(xiàng)。如果使用低于此值的索引,,則會(huì)報(bào)錯(cuò)

>>>jane[-5]Traceback(mostrecentcalllast):...IndexError:tupleindexoutofrange

對于嵌套tuple,,我們該如何訪問到里面的元素?

>>>employee=(...'John',...35,...'PythonDeveloper',...('Django','Flask','FastAPI','CSS','HTML'),...)

答案是通過多層索引

tuple切片

和其他序列一樣,,tuple可以使用切片操作來提取其中的內(nèi)容

#語法tuple_object[start:stop:step]

[start:stop:step]此構(gòu)造的一部分稱為切片運(yùn)算符,。它由一對方括號和三個(gè)可選索引組成:start、stop和step

其中第二個(gè)冒號不是必須的,,如果step為1的話就可以省略

Index

Description

DefaultValue

start

指定要開始切片的索引(開區(qū)間)

0

stop

指定希望切片停止提取元素的索引(閉區(qū)間)

len(tuple_object)

step

提供一個(gè)整數(shù)值,,表示切片在每個(gè)步驟中將跳過多少項(xiàng)

1

不可變特性

Python的tuple是不可變的,這意味著一旦你創(chuàng)建了一個(gè)tuple,,你就不能就地更改或更新它的元素,,只能創(chuàng)建新的tuple對象

tuple不可變的另一個(gè)含義是無法對其擴(kuò)容縮容,與列表不同,,元組沒有.append,、.extend.insert.remove和.clear方法

也不支持del語句

盡管tuple是不可變的,但是我們知道tuple里面可以存儲(chǔ)任意類型的對象,,包括可變對象

這意味著我們可以在tuple中存儲(chǔ)列表,、集合、字典等其他可變對象

>>>student_info=('Linda',18,['Math','Physics','History'])

student_info中前兩個(gè)元素是不可變的,,最后一個(gè)是列表(可變),,所以我們可以對其進(jìn)行更改

又因?yàn)閠uple是不可變的(可哈希),所以可以用作字典中的key

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多