Python 基礎(chǔ)教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類型

Python 文件操作

Python 對象和類

Python 日期和時(shí)間

Python 高級知識

Python 參考手冊

Python 元組(Tuple)

Python中的元組類似于列表。兩者之間的區(qū)別在于,一旦分配了元組,就無法更改其元素,而在列表中,可以更改元素。

創(chuàng)建一個(gè)元組

通過將所有項(xiàng)目(元素)放在括號內(nèi)()(以逗號分隔)來創(chuàng)建元組。括號是可選的,但是,使用括號是一個(gè)好習(xí)慣。

元組可以具有任意數(shù)量的項(xiàng),并且它們可以具有不同的類型(整數(shù),浮點(diǎn)數(shù),列表,字符串等)。

也可以在不使用括號的情況下創(chuàng)建元組。這稱為元組包裝。

用一個(gè)元素創(chuàng)建一個(gè)元組有點(diǎn)特殊。

只有一個(gè)元素的元組,括號內(nèi)僅包含一個(gè)元素是不夠的。我們將需要一個(gè)逗號結(jié)尾來表明它實(shí)際上是一個(gè)元組。

my_tuple = ("hello")
print(type(my_tuple))  # <class 'str'>

# 創(chuàng)建一個(gè)只有一個(gè)元素的元組
my_tuple = ("hello",)  
print(type(my_tuple))  # <class 'tuple'> 

# 括號是可選的
my_tuple = "hello",
print(type(my_tuple))  # <class 'tuple'>

訪問元組元素

我們可以通過多種方式訪問元組的元素。

1.索引

我們可以使用索引運(yùn)算符[]訪問索引從0開始的元組中的項(xiàng)目。

因此,具有6個(gè)元素的元組將具有從0到5的索引。嘗試訪問元組之外的元素(例如6、7 ...)將引發(fā)IndexError。

索引必須是整數(shù);因此我們不能使用float或其他類型。如果使用會導(dǎo)致TypeError。

同樣,使用嵌套索引訪問嵌套元組,如下面的示例所示。

my_tuple = ('p','e','r','m','i','t')

print(my_tuple[0])   # 'p' 
print(my_tuple[5])   # 't'

# IndexError:列表索引超出范圍
# print(my_tuple[6])

# 索引必須是整數(shù)
# TypeError: 列表索引必須是整數(shù),而不是浮點(diǎn)數(shù)
# my_tuple[2.0]

# 嵌套元組
n_tuple = ("mouse", [8, 4, 6], (1, 2, 3))

# 嵌套索引
print(n_tuple[0][3])       # 's'
print(n_tuple[1][1])       # 4

2.負(fù)索引

Python允許對其序列進(jìn)行負(fù)索引。

索引-1表示最后一項(xiàng),-2表示倒數(shù)第二項(xiàng),依此類推。

my_tuple = ('p','e','r','m','i','t')

# 輸出: 't'
print(my_tuple[-1])

# 輸出: 'p'
print(my_tuple[-6])

3.切片

我們可以使用切片運(yùn)算符-冒號“:”訪問元組中的一系列項(xiàng)目。

my_tuple = ('p','r','o','g','r','a','m','i','z')

# 第2個(gè)-4個(gè)元素
# 輸出: ('r', 'o', 'g')
print(my_tuple[1:4])

# 從開始到第二個(gè)元素
# 輸出: ('p', 'r')
print(my_tuple[:-7])

# 第8個(gè)元素到結(jié)尾
# 輸出: ('i', 'z')
print(my_tuple[7:])

# 從開始到結(jié)尾的元素
# 輸出: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple[:])

通過考慮索引位于元素之間,可以最好地可視化切片,如下所示。因此,如果要訪問范圍,則需要將元組中的部分切片的索引。

Python中的元素切片

更換元組

與列表不同,元組是不可變的。

這意味著一旦分配了元組的元素就無法更改。但是,如果元素本身是可變的數(shù)據(jù)類型(如列表),則可以更改其嵌套項(xiàng)目。

我們還可以將元組分配給不同的值(重新分配)。

my_tuple = (4, 2, 3, [6, 5])

# TypeError: 'tuple' 對象不支持項(xiàng)分配
# my_tuple[1] = 9

# 但是,可變要素的項(xiàng)目可以變更
my_tuple[3][0] = 9    # Output: (4, 2, 3, [9, 5])
print(my_tuple)

# 元組可以重新分配
my_tuple = ('p','r','o','g','r','a','m','i','z')

# 輸出: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple)

我們可以使用+運(yùn)算符來合并兩個(gè)元組。這也稱為串聯(lián)。

我們還可以使用運(yùn)算符*,將元組中的元素重復(fù)給定次數(shù)。

無論+和*操作會導(dǎo)致新的記錄。

# 串聯(lián)
# 輸出: (1, 2, 3, 4, 5, 6)
print((1, 2, 3) + (4, 5, 6))

# 重復(fù)
# 輸出: ('Repeat', 'Repeat', 'Repeat')
print(("Repeat",) * 3)

刪除元組

如上所述,我們不能更改元組中的元素。這也意味著我們無法刪除或刪除元組中的項(xiàng)目。

但是可以使用關(guān)鍵字del完全刪除一個(gè)元組。

my_tuple = ('p','r','o','g','r','a','m','i','z')

# 不能刪除條目
# TypeError: 'tuple'對象不支持項(xiàng)目刪除
# del my_tuple[3]

# 可以刪除整個(gè)元組
del my_tuple

# NameError: 未定義名稱“ my_tuple”
print(my_tuple)

元組方法

元組不提供添加項(xiàng)目或刪除項(xiàng)目的方法。僅以下兩種方法可用。

Python元組方法
方法描述
count(x)返回項(xiàng)目數(shù)x
index(x)返回等于x的第一項(xiàng)的索引

Python元組方法的一些示例:

my_tuple = ('a','p','p','l','e',)

print(my_tuple.count('p'))  # Output: 2
print(my_tuple.index('l'))  # Output: 3

其他元組操作

1.元組成員資格測試

我們可以使用關(guān)鍵字in來測試項(xiàng)目是否存在于元組中。

my_tuple = ('a','p','p','l','e',)

# In 操作
# 輸出: True
print('a' in my_tuple)

# 輸出: False
print('b' in my_tuple)

# Not in 操作
# 輸出: True
print('g' not in my_tuple)

2.遍歷元組

使用for循環(huán),我們可以遍歷元組中的每個(gè)項(xiàng)目。

# 輸出: 
# Hello John
# Hello Kate
for name in ('John','Kate'):
     print("Hello",name)

元組相比于列表的優(yōu)勢

由于元組與列表非常相似,因此它們在類似情況下也都使用。

但是,在列表上實(shí)現(xiàn)元組具有某些優(yōu)點(diǎn)。下面列出了一些主要優(yōu)點(diǎn):

  • 我們通常將元組用于異構(gòu)(不同)數(shù)據(jù)類型,將列表用于同類(相似)數(shù)據(jù)類型。

  • 由于元組是不可變的,因此遍歷元組要比使用list更快。因此,性能略有提升。

  • 包含不可變元素的元組可以用作字典的鍵。對于列表,這是不可能的。

  • 如果您擁有不變的數(shù)據(jù),則將其實(shí)現(xiàn)為元組將確保其保持寫保護(hù)。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清