欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python元組超詳細(xì)講解(小白篇)

 更新時(shí)間:2024年12月07日 08:47:17   作者:小李很執(zhí)著  
這篇文章主要介紹了Python元組超詳細(xì)講解的相關(guān)資料,元組是Python中的一種不可變序列類型,適用于存儲(chǔ)多個(gè)有序元素,它支持多種操作,如索引、切片、合并、重復(fù)等,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

元組(Tuple)是Python中的一種內(nèi)置數(shù)據(jù)類型,用于存儲(chǔ)多個(gè)有序的元素。與列表不同,元組是不可變的,這意味著一旦創(chuàng)建,元組中的元素就不能修改。

1. 元組簡(jiǎn)介

元組是Python中的一種序列類型,使用圓括號(hào) () 表示。元組可以包含任意類型的元素,包括數(shù)字、字符串、列表、甚至其他元組。元組的不可變性使得它們?cè)谀承﹫?chǎng)景下非常有用,例如作為函數(shù)的返回值,或者作為字典的鍵。

創(chuàng)建元組

元組可以通過圓括號(hào) () 創(chuàng)建,元素之間用逗號(hào) , 分隔。如果元組中只有一個(gè)元素,需要在元素后加一個(gè)逗號(hào) ,,以避免與普通括號(hào)表達(dá)式混淆。

示例:

tup1 = (1, 2, 3)
tup2 = ("Python", 3.7, [1, 2, 3])
tup3 = (1,)  # 單元素元組
tup4 = ()  # 空元組

print(tup1)  # 輸出:(1, 2, 3)
print(tup2)  # 輸出:("Python", 3.7, [1, 2, 3])
print(tup3)  # 輸出:(1,)
print(tup4)  # 輸出:()

元組也可以通過內(nèi)置函數(shù) tuple() 創(chuàng)建,將可迭代對(duì)象(如列表、字符串)轉(zhuǎn)換為元組。

示例:

lst = [1, 2, 3]
tup = tuple(lst)
print(tup)  # 輸出:(1, 2, 3)

s = "Python"
tup2 = tuple(s)
print(tup2)  # 輸出:('P', 'y', 't', 'h', 'o', 'n')

2. 元組常用操作

雖然元組是不可變的,但Python提供了一些操作符和方法,用于查詢和處理元組中的元素。

訪問元組元素

元組中的元素可以通過索引訪問,索引從0開始。負(fù)索引從-1開始,表示從末尾向前數(shù)。

示例:

tup = (1, 2, 3, 4, 5)
print(tup[0])  # 輸出:1
print(tup[-1]) # 輸出:5

切片操作

元組支持切片操作,可以提取子元組。切片的語法為 元組[開始:結(jié)束:步長(zhǎng)],其中 開始 和 結(jié)束 是索引,步長(zhǎng) 表示元素間的間隔。

示例:

tup = (1, 2, 3, 4, 5)
print(tup[1:4])  # 輸出:(2, 3, 4)
print(tup[:3])   # 輸出:(1, 2, 3)
print(tup[::2])  # 輸出:(1, 3, 5)

合并和重復(fù)

元組可以使用 + 操作符合并,使用 * 操作符重復(fù)。

示例:

tup1 = (1, 2, 3)
tup2 = (4, 5, 6)
tup3 = tup1 + tup2
print(tup3)  # 輸出:(1, 2, 3, 4, 5, 6)

tup4 = tup1 * 3
print(tup4)  # 輸出:(1, 2, 3, 1, 2, 3, 1, 2, 3)

成員操作符

可以使用 in 和 not in 操作符檢查元素是否存在于元組中。

示例:

tup = (1, 2, 3, 4, 5)
print(3 in tup)     # 輸出:True
print(6 not in tup) # 輸出:True

內(nèi)置函數(shù)

以下是一些常用的元組內(nèi)置函數(shù):

  • len(tup):返回元組的長(zhǎng)度。
  • max(tup):返回元組中的最大值。
  • min(tup):返回元組中的最小值。
  • sum(tup):返回元組中所有元素的和(適用于數(shù)字元組)。
  • sorted(tup):返回元組的排序副本(結(jié)果為列表)。
  • tuple(iterable):將可迭代對(duì)象轉(zhuǎn)換為元組。

示例:

tup = (1, 2, 3, 4, 5)
print(len(tup))     # 輸出:5
print(max(tup))     # 輸出:5
print(min(tup))     # 輸出:1
print(sum(tup))     # 輸出:15
print(sorted(tup))  # 輸出:[1, 2, 3, 4, 5]

解包元組

元組解包允許將元組中的元素賦值給多個(gè)變量。

示例:

tup = (1, 2, 3)
a, b, c = tup
print(a, b, c)  # 輸出:1 2 3

# 使用 * 運(yùn)算符解包剩余元素
tup = (1, 2, 3, 4, 5)
a, *b, c = tup
print(a)  # 輸出:1
print(b)  # 輸出:[2, 3, 4]
print(c)  # 輸出:5

元組方法

元組提供了兩個(gè)內(nèi)置方法:

  • tup.count(x):返回元素 x 在元組中出現(xiàn)的次數(shù)。
  • tup.index(x):返回元素 x 在元組中第一次出現(xiàn)的索引。

示例:

tup = (1, 2, 3, 2, 4, 2)
print(tup.count(2))  # 輸出:3
print(tup.index(3))  # 輸出:2

3. 默認(rèn)集合類型

在Python中,元組被廣泛用作默認(rèn)集合類型,因?yàn)樗鼈兪遣豢勺兊摹_@種不可變性使得元組在某些場(chǎng)景下非常有用,例如:

作為字典的鍵

由于元組是不可變的,因此可以用作字典的鍵。而列表是可變的,不能用作字典的鍵。

示例:

d = {(1, 2): "a", (3, 4): "b"}
print(d[(1, 2)])  # 輸出:"a"
print(d[(3, 4)])  # 輸出:"b"

作為函數(shù)參數(shù)

元組常用于傳遞函數(shù)的多個(gè)參數(shù)。函數(shù)可以接受元組作為參數(shù),并解包元組中的元素。

示例:

def func(a, b, c):
    print(a, b, c)

tup = (1, 2, 3)
func(*tup)  # 輸出:1 2 3

作為函數(shù)的返回值

元組常用于函數(shù)返回多個(gè)值。函數(shù)可以返回一個(gè)元組,并在調(diào)用時(shí)解包返回的元組。

示例:

def func():
    return 1, 2, 3

a, b, c = func()
print(a, b, c)  # 輸出:1 2 3

存儲(chǔ)多種類型的元素

元組可以存儲(chǔ)不同類型的元素,常用于固定結(jié)構(gòu)的數(shù)據(jù)。例如,一個(gè)包含名稱、年齡和地址的元組。

示例:

person = ("John", 25, "1234 Elm St")
name, age, address = person
print(f"Name: {name}, Age: {age}, Address: {address}")
# 輸出:Name: John, Age: 25, Address: 1234 Elm St

4.元組的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 不可變性:元組的不可變性使得它們?cè)诙嗑€程環(huán)境中是安全的,可以避免數(shù)據(jù)競(jìng)爭(zhēng)。
    tup = (1, 2, 3)
    # 無法修改元組中的元素
    # tup[0] = 10  # 這行代碼會(huì)引發(fā)錯(cuò)誤
    
  • 性能:元組的創(chuàng)建和訪問速度比列表快,因?yàn)樗鼈兪遣豢勺兊?,不需要額外的內(nèi)存開銷。
    import timeit
    
    t1 = timeit.timeit("(1, 2, 3)", number=1000000)
    t2 = timeit.timeit("[1, 2, 3]", number=1000000)
    
    print(f"元組創(chuàng)建時(shí)間: {t1}")
    print(f"列表創(chuàng)建時(shí)間: {t2}")
    
  • 哈希特性:元組可以作為字典的鍵,因?yàn)樗鼈兪遣豢勺兊?,這在某些數(shù)據(jù)結(jié)構(gòu)中非常有用。
    d = { (1, 2): "a", (3, 4): "b" }
    print(d[(1, 2)])  # 輸出:"a"
    

缺點(diǎn)

  • 不可變性:雖然不可變性是一個(gè)優(yōu)點(diǎn),但在需要修改元素的情況下,它可能成為一個(gè)限制。
    tup = (1, 2, 3)
    # 嘗試修改元組中的元素會(huì)引發(fā)錯(cuò)誤
    # tup[0] = 10  # 這行代碼會(huì)引發(fā)錯(cuò)誤
    
  • 功能限制:與列表相比,元組不支持許多列表的方法,例如 append()、remove() 等,這在某些操作中可能不方便。
    lst = [1, 2, 3]
    lst.append(4)
    print(lst)  # 輸出:[1, 2, 3, 4]
    
    tup = (1, 2, 3)
    # tup.append(4)  # 這行代碼會(huì)引發(fā)錯(cuò)誤
    

5.元組的使用場(chǎng)景

數(shù)據(jù)存儲(chǔ)

元組常用于存儲(chǔ)不同類型的數(shù)據(jù),例如數(shù)據(jù)庫記錄。一條記錄的不同字段可以用元組存儲(chǔ)。

record = ("John Doe", 30, "Engineer")
name, age, profession = record
print(f"Name: {name}, Age: {age}, Profession: {profession}")
# 輸出:Name: John Doe, Age: 30, Profession: Engineer

配置項(xiàng)

在某些情況下,配置項(xiàng)可以用元組存儲(chǔ),因?yàn)樗鼈兪遣豢勺兊?,不?huì)被意外修改。

config = (800, 600)
# config[0] = 1024  # 這行代碼會(huì)引發(fā)錯(cuò)誤
print(config)  # 輸出:(800, 600)

函數(shù)返回值

在需要返回多個(gè)值的函數(shù)中,元組是一個(gè)常用的選擇。

def get_user_info():
    return "Alice", 28, "Developer"

name, age, job = get_user_info()
print(f"Name: {name}, Age: {age}, Job: {job}")
# 輸出:Name: Alice, Age: 28, Job: Developer

多線程環(huán)境

在多線程環(huán)境中,使用元組可以避免數(shù)據(jù)競(jìng)爭(zhēng)和修改問題。

import threading

def worker(data):
    print(data)

data = (1, 2, 3)
threads = [threading.Thread(target=worker, args=(data,)) for _ in range(5)]

for t in threads:
    t.start()

for t in threads:
    t.join()

6.與其他數(shù)據(jù)結(jié)構(gòu)的比較

與列表的比較

  • 不可變性:元組是不可變的,而列表是可變的。
    tup = (1, 2, 3)
    # tup[0] = 10  # 這行代碼會(huì)引發(fā)錯(cuò)誤
    
    lst = [1, 2, 3]
    lst[0] = 10
    print(lst)  # 輸出:[10, 2, 3]
    
  • 性能:元組的性能通常比列表好,因?yàn)樗鼈儾恍枰~外的內(nèi)存開銷。
    import timeit
    
    t1 = timeit.timeit("(1, 2, 3)", number=1000000)
    t2 = timeit.timeit("[1, 2, 3]", number=1000000)
    
    print(f"元組創(chuàng)建時(shí)間: {t1}")
    print(f"列表創(chuàng)建時(shí)間: {t2}")
    
  • 功能:列表有更多的方法和操作符,例如 append()、remove() 等。
    lst = [1, 2, 3]
    lst.append(4)
    print(lst)  # 輸出:[1, 2, 3, 4]
    
    tup = (1, 2, 3)
    # tup.append(4)  # 這行代碼會(huì)引發(fā)錯(cuò)誤
    

與集合的比較

  • 順序:元組是有序的,而集合是無序的。
    tup = (1, 2, 3)
    print(tup)  # 輸出:(1, 2, 3)
    
    s = {3, 1, 2}
    print(s)  # 輸出:{1, 2, 3} 或 {3, 1, 2} 等(集合是無序的)
    
  • 不可變性:元組是不可變的,而集合是可變的。
    tup = (1, 2, 3)
    # tup[0] = 10  # 這行代碼會(huì)引發(fā)錯(cuò)誤
    
    s = {1, 2, 3}
    s.add(4)
    print(s)  # 輸出:{1, 2, 3, 4}
    
  • 重復(fù)元素:元組允許重復(fù)元素,而集合不允許重復(fù)元素。
    tup = (1, 2, 2, 3)
    print(tup)  # 輸出:(1, 2, 2, 3)
    
    s = {1, 2, 2, 3}
    print(s)  # 輸出:{1, 2, 3}
    

7.高級(jí)用法

嵌套元組

元組可以包含其他元組作為元素,這使得它們可以用于表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。

nested_tup = (1, (2, 3), (4, (5, 6)))
print(nested_tup[1])  # 輸出:(2, 3)
print(nested_tup[2][1])  # 輸出:(5, 6)

元組作為數(shù)據(jù)表

在處理數(shù)據(jù)庫或表格數(shù)據(jù)時(shí),元組常用于表示行數(shù)據(jù)。

rows = [
    (1, "John", "Doe"),
    (2, "Jane", "Smith"),
    (3, "Emily", "Jones")
]

for row in rows:
    print(row)
# 輸出:
# (1, "John", "Doe")
# (2, "Jane", "Smith")
# (3, "Emily", "Jones")

多變量交換

元組可以用于交換多個(gè)變量的值,而不需要臨時(shí)變量。

a, b = 1, 2
a, b = b, a
print(a, b)  # 輸出:2 1

總結(jié)

元組是Python中重要的數(shù)據(jù)結(jié)構(gòu),因其不可變性而被廣泛應(yīng)用。通過本文的詳細(xì)講解,相信讀者對(duì)元組的常用操作和其作為默認(rèn)集合類型的用法有了深入的理解。元組的不可變性使得它們?cè)谀承﹫?chǎng)景下非常有用,如作為字典的鍵、函數(shù)參數(shù)和返回值等。

到此這篇關(guān)于Python元組超詳細(xì)講解的文章就介紹到這了,更多相關(guān)Python元組詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python爬蟲利器之PhantomJS詳解

    Python爬蟲利器之PhantomJS詳解

    這篇文章主要介紹了Python爬蟲利器之PhantomJS詳解,PhantomJS是一個(gè)基于WebKit的無頭瀏覽器,它沒有圖形界面,但是它可以像傳統(tǒng)的瀏覽器一樣訪問web頁面,并返回已呈現(xiàn)的內(nèi)容,PhantomJS是一種命令行工具,可以用它來測(cè)試和爬取Web頁面,需要的朋友可以參考下
    2023-09-09
  • python+matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪制圖片實(shí)例代碼(交互式繪圖)

    python+matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪制圖片實(shí)例代碼(交互式繪圖)

    這篇文章主要介紹了python+matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪制圖片實(shí)例代碼(交互式繪圖),小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • VSCode配置python環(huán)境及中文問題解決方法

    VSCode配置python環(huán)境及中文問題解決方法

    這篇文章主要介紹了VSCode配置python環(huán)境及中文問題,print打印中文亂碼如何解決這個(gè)問題呢,本文給大家?guī)韮煞N方法幫助大家解決這個(gè)問題,需要的朋友可以參考下
    2022-02-02
  • Python必備技巧之字典(Dictionary)詳解

    Python必備技巧之字典(Dictionary)詳解

    Python中的字典由于是對(duì)象的集合屬于復(fù)合數(shù)據(jù)類型,類似于列表。本文將通過示例詳細(xì)講解Python中字典的使用方法,感興趣的可以了解一下
    2022-03-03
  • python實(shí)現(xiàn)線性插值的示例

    python實(shí)現(xiàn)線性插值的示例

    線性插值是針對(duì)一維數(shù)據(jù)的插值方法,它根據(jù)一維數(shù)據(jù)序列中需要插值的點(diǎn)的左右臨近兩個(gè)數(shù)據(jù)來進(jìn)行數(shù)值估計(jì),這篇文章主要介紹了python實(shí)現(xiàn)線性插值,需要的朋友可以參考下
    2022-12-12
  • Python collections模塊的使用方法

    Python collections模塊的使用方法

    這篇文章主要介紹了Python collections模塊的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python魔法方法-屬性訪問控制詳解

    python魔法方法-屬性訪問控制詳解

    下面小編就為大家?guī)硪黄猵ython魔法方法-屬性訪問控制詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • 一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法

    一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法

    這篇文章主要介紹了一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python 輸入一個(gè)數(shù)字判斷成績(jī)分?jǐn)?shù)等級(jí)的方法

    Python 輸入一個(gè)數(shù)字判斷成績(jī)分?jǐn)?shù)等級(jí)的方法

    今天小編就為大家分享一篇Python 輸入一個(gè)數(shù)字判斷成績(jī)分?jǐn)?shù)等級(jí)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python序列化與反序列化pickle用法實(shí)例

    Python序列化與反序列化pickle用法實(shí)例

    這篇文章主要介紹了Python序列化與反序列化pickle用法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論