Python元組超詳細(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+matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪制圖片實(shí)例代碼(交互式繪圖)
這篇文章主要介紹了python+matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪制圖片實(shí)例代碼(交互式繪圖),小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01VSCode配置python環(huán)境及中文問題解決方法
這篇文章主要介紹了VSCode配置python環(huán)境及中文問題,print打印中文亂碼如何解決這個(gè)問題呢,本文給大家?guī)韮煞N方法幫助大家解決這個(gè)問題,需要的朋友可以參考下2022-02-02一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法
這篇文章主要介紹了一文帶你掌握Pyecharts地理數(shù)據(jù)可視化的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Python 輸入一個(gè)數(shù)字判斷成績(jī)分?jǐn)?shù)等級(jí)的方法
今天小編就為大家分享一篇Python 輸入一個(gè)數(shù)字判斷成績(jī)分?jǐn)?shù)等級(jí)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11