国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深挖 Python 元組 pt.1

這篇具有很好參考價(jià)值的文章主要介紹了深挖 Python 元組 pt.1。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

哈嘍大家好,我是咸魚

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

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

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

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

原文鏈接:https://realpython.com/python-tuple/

前言

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

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

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

  • 有序:里面的元素可以按照順序排列
  • 輕量級(jí):與列表等其他序列相比,tuple 消耗的內(nèi)存要少
  • 從零開始索引:可以從零開始索引訪問(wèn)里面的元素
  • 不可變:不可以改變里面的元素
  • 異構(gòu):可以存儲(chǔ)不同數(shù)據(jù)類型的對(duì)象(包括可變對(duì)象)
  • 可嵌套:tuple 里面可以包含 tuple
  • 可迭代:能夠遍歷里面的元素
  • 可切片:可以從元組中提取一系列元素
  • 可組合:支持串聯(lián)操作,可以使用串聯(lián)運(yùn)算符組合多個(gè)元組
  • 可哈希:里面的元素都是不可變時(shí)可以用作字典的鍵

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

>>> record = ("John", 35, "Python Developer")

>>> record
('John', 35, 'Python Developer')

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

>>> record[0]
'John'
>>> record[1]
35
>>> record[2]
'Python Developer'

創(chuàng)建 tuple

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

直接創(chuàng)建

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

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

>>> jane = ("Jane Doe", 25, 1.75, "Canada")
>>> point = (2, 7)
>>> pen = (2, "Solid", True)

>>> days = (
...     "Monday",
...     "Tuesday",
...     "Wednesday",
...     "Thursday",
...     "Friday",
...     "Saturday",
...     "Sunday",
... )

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

>>> empty = ()
>>> empty
()

>>> type(empty)
<class 'tuple'>

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

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

除此之外,下面的情況也需要使用到括號(hào)

>>> "Hello, %s! You're %s years old." % ("Linda", 24)
'Hello, Linda! You're 24 years old.'

>>> "Hello, %s! You're %s years old." % "Linda", 24
Traceback (most recent call last):
    ...
TypeError: not enough arguments for format string

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

  • 第一種加括號(hào):使用括在括號(hào)中的元組作為 % 運(yùn)算符的右側(cè)操作數(shù),按預(yù)期工作
  • 第二種沒加括號(hào):報(bào)錯(cuò)

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

>>> one_word = "Hello",
>>> one_word
('Hello',)

>>> one_number = (42,)
>>> one_number
(42,)

可以看到括號(hào)不是必需的,尾隨逗號(hào)才是

使用 tuple() 創(chuàng)建

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

# 語(yǔ)法
tuple([iterable])
>>> tuple(["Jane Doe", 25, 1.75, "Canada"])
('Jane Doe', 25, 1.75, 'Canada')

>>> tuple("Pythonista")
('P', 'y', 't', 'h', 'o', 'n', 'i', 's', 't', 'a')

>>> tuple({
...     "manufacturer": "Boeing",
...     "model": "747",
...     "passengers": 416,
... }.values())
('Boeing', '747', 416)

>>> tuple()
()

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

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

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

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

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

tuple 索引和切片

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

# 語(yǔ)法
tuple_object[index]
# 例子
>>> jane = ("Jane Doe", 25, 1.75, "Canada")

>>> jane[0]
'Jane Doe'
>>> jane[1]
25
>>> jane[3]
'Canada'

用不同的索引為 tuple 建立索引,可以直接訪問(wèn)相關(guān)的值。如果使用大 O 符號(hào)表示時(shí)間復(fù)雜度,那么可以說(shuō)索引是一個(gè)O(1)操作
深挖 Python 元組 pt.1
這意味著 tuple 非常適合需要快速訪問(wèn)序列中的特定項(xiàng)的情況

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

>>> len(jane)
4

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

>>> jane[4]
Traceback (most recent call last):
    ...
IndexError: tuple index out of range

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

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

>>> jane[-1]
'Canada'

>>> jane[-2]
1.75

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

>>> jane[-5]
Traceback (most recent call last):
    ...
IndexError: tuple index out of range

對(duì)于嵌套 tuple,我們?cè)撊绾卧L問(wèn)到里面的元素?

>>> employee = (
...     "John",
...     35,
...     "Python Developer",
...     ("Django", "Flask", "FastAPI", "CSS", "HTML"),
... )

答案是通過(guò)多層索引

>>> employee[-1][0]
'Django'

>>> employee[-1][1]
'Flask'

tuple 切片

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

# 語(yǔ)法
tuple_object[start:stop:step]

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

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

Index Description Default Value
start 指定要開始切片的索引(開區(qū)間) 0
stop 指定希望切片停止提取元素的索引(閉區(qū)間) len(tuple_object)
step 提供一個(gè)整數(shù)值,表示切片在每個(gè)步驟中將跳過(guò)多少項(xiàng) 1
>>> days = (
...     "Monday",
...     "Tuesday",
...     "Wednesday",
...     "Thursday",
...     "Friday",
...     "Saturday",
...     "Sunday",
... )

>>> days[:5]
('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday')

>>> days[5:]
('Saturday', 'Sunday')

不可變特性

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

>>> jane = ("Jane Doe", 25, 1.75, "Canada")

>>> jane[3] = "United States"
Traceback (most recent call last):
    ...
TypeError: 'tuple' object does not support item assignment

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

也不支持 del 語(yǔ)句

>>> point = (7, 14, 21)

>>> del point[2]
Traceback (most recent call last):
    ...
TypeError: 'tuple' object doesn't support item deletion

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

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

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

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

>>> student_info[2][2] = "Computer science"
>>> student_info
('Linda', 22, ['Math', 'Physics', 'Computer science'])

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

>>> student_courses = {
...     ("John", "Doe"): ["Physics", "Chemistry"],
...     ("Jane", "Doe"): ["English", "History"],
... }

>>> student_courses[("Jane", "Doe")]
['English', 'History']

如果用作 key 的 tuple 里面包含可變?cè)兀瑒t會(huì)報(bào)錯(cuò)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-711682.html

>>> student_courses = {
...     (["John", "Miguel"], "Doe"): ["Physics", "Chemistry"],
...     (["Fatima", "Jane"], "Doe"): ["English", "History"],
... }
Traceback (most recent call last):
    ...
TypeError: unhashable type: 'list'

到了這里,關(guān)于深挖 Python 元組 pt.1的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 咸魚之王小游戲PC版鼠標(biāo)模擬器實(shí)現(xiàn)

    最近朋友在玩咸魚之王小游戲,用電腦掛機(jī),由于火把缺乏,我看他經(jīng)常瘋狂的點(diǎn)鼠標(biāo)攻擊敵人。 我:\\\"你為什么不用鼠標(biāo)模擬器去點(diǎn)?\\\" 朋友:\\\"鼠標(biāo)模擬器點(diǎn)也不能干其他的事情,鼠標(biāo)必須放到游戲窗口才行。\\\", 我:\\\"我?guī)湍愫?jiǎn)單實(shí)現(xiàn)個(gè)鼠標(biāo)模擬器吧\\\" ?總結(jié) 其實(shí)原理很簡(jiǎn)單

    2024年02月12日
    瀏覽(113)
  • 【Python學(xué)習(xí)】Python學(xué)習(xí)11-元組

    【Python學(xué)習(xí)】Python學(xué)習(xí)11-元組

    目錄 文章所屬專區(qū) Python學(xué)習(xí) 本章節(jié)主要說(shuō)明Python的Python 的元組與列表類似,不同之處在于元組的元素不能修改。通過(guò)小括號(hào)創(chuàng)建。 創(chuàng)建一個(gè)列表 通過(guò)方括號(hào)和逗號(hào)分割創(chuàng)建,列表數(shù)據(jù)項(xiàng)中不需要有相同的類型 創(chuàng)建空元組 元組中只包含一個(gè)元素時(shí),需要在元素后面添加逗

    2024年01月24日
    瀏覽(29)
  • 《對(duì)線面試官》| 高頻 Python 面試題 pt.1

    1.聊聊 python 中的值傳遞和引用傳遞吧 值傳遞: 值傳遞意味著在函數(shù)調(diào)用時(shí),將實(shí)際參數(shù)的值復(fù)制一份傳遞給函數(shù)的形式參數(shù) 在函數(shù)內(nèi)部,形式參數(shù)將作為局部變量使用,對(duì)形式參數(shù)的修改不會(huì)影響原始變量的值 引用傳遞 引用傳遞意味著在函數(shù)調(diào)用時(shí),將實(shí)際參數(shù)的引用(

    2024年02月17日
    瀏覽(36)
  • 【Python數(shù)據(jù)類型-元組】------- PYTHON基礎(chǔ)11

    【Python數(shù)據(jù)類型-元組】------- PYTHON基礎(chǔ)11

    元組與列表類似。 元組的列表最大區(qū)別是: 元組的元素是不可被修改,添加,和刪除的。 元組使用 小括號(hào) 定義,而列表使用中括號(hào)定義。 輸出 輸出 3.1. 列表轉(zhuǎn)為元組,通過(guò)內(nèi)置函數(shù)tuple()實(shí)現(xiàn),比如: 輸出 3.2. 元組轉(zhuǎn)為列表,通過(guò)內(nèi)置函數(shù)list()實(shí)現(xiàn) 輸出 4.1. 元組更新:構(gòu)

    2024年02月04日
    瀏覽(22)
  • 【Python】元組(tuple)詳解

    元組(tuple)是 Python 中另一個(gè)重要的序列結(jié)構(gòu),和列表類似,元組也是由一系列按特定順序排序的元素組成。 元組也可以看做是 不可變的列表 ,通常情況下,元組用于保存無(wú)需修改的內(nèi)容。 從形式上看,元組的所有元素都放在一對(duì)小括號(hào)( )中,相鄰元素之間用逗號(hào),分隔,

    2024年02月05日
    瀏覽(27)
  • Python -- 列表、元組、字典、集合

    Python -- 列表、元組、字典、集合

    目錄 一、列表 1.列表介紹 1)列表的介紹 2)列表創(chuàng)建方式 2.列表的增刪改查 1)獲取列表中某個(gè)元素(查) 2)修改元素的值(改) 3)刪除元素(刪) 4)添加元素(增) 3.其它常用方法 1)列表常用方法 2)常用Python內(nèi)置方法 二、元組 1.元組介紹 1)元組的介紹 2)元組創(chuàng)建

    2024年02月03日
    瀏覽(26)
  • Python 基礎(chǔ)(十):元組

    Python 基礎(chǔ)(十):元組

    ?? 博客主頁(yè):水滴技術(shù) ?? 訂閱專欄:Python 入門核心技術(shù) ?? 支持水滴: 點(diǎn)贊 ?? + 收藏 ? + 留言 ??

    2023年04月23日
    瀏覽(26)
  • Python 集合(列表 ,元組,集合, 字典)

    Python 編程語(yǔ)言中有四種集合數(shù)據(jù)類型: 列表(List)是一種有序和可更改的集合。允許重復(fù)的成員。 元組(Tuple)是一種有序且不可更改的集合。允許重復(fù)的成員。 集合(Set)是一個(gè)無(wú)序和無(wú)索引的集合。沒有重復(fù)的成員。 字典(Dictionary)是一個(gè)無(wú)序,可變和有索引的集合

    2024年02月02日
    瀏覽(19)
  • Python中的元組(tuple)

    Python中的元組(tuple)是一種不可變的有序序列,與列表(list)類似。元組中的元素可以是任何類型的對(duì)象,并且可以包含重復(fù)的元素。元組一旦創(chuàng)建就無(wú)法修改。 以下是Python元組的一些常用操作: 1. 創(chuàng)建元組:可以使用小括號(hào)()或者tuple()函數(shù)來(lái)創(chuàng)建一個(gè)元組。 ```python my_tuple =

    2024年02月04日
    瀏覽(25)
  • Python—元組詳解(超詳細(xì))

    元組(tuple)是?Python?編程語(yǔ)言中的一種數(shù)據(jù)類型。元組與列表類似,不同之處在于 元組是不可變的 ,一旦創(chuàng)建后就不能修改。 元組使用 圓括號(hào)?() ?來(lái)表示,其中每個(gè)元素之間用 逗號(hào)隔開 。例如: 元組可以通過(guò) 下標(biāo)訪問(wèn) 其中的元素,下標(biāo)從?0?開始。例如: 元組支持

    2024年02月15日
    瀏覽(10)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包