Python元組推導式

2021-09-26 03:53:18 字數 1305 閱讀 5738

元組推導式可以利用 range 區間、元組、列表、字典和集合等資料型別,快速生成乙個滿足指定需求的元組。

元組推導式的語法格式如下:

(表示式 for 迭代變數 in 可迭代物件 [if 條件表示式] )
其中,用 括起來的部分,可以使用,也可以省略。

通過和列表推導式做對比,你會發現,除了元組推導式是用 () 圓括號將各部分括起來,而列表推導式用的是 ,其它完全相同。不僅如此,元組推導式和列表推導式的用法也完全相同。

例如,我們可以使用下面的**生成乙個包含數字 1~9 的元組:

a = (x for x in range(1,10))

print(a)

執行結果為:

at 0x0000020bad136620>
從上面的執行結果可以看出,使用元組推導式生成的結果並不是乙個元組,而是乙個生成器物件(後續會介紹),這一點和列表推導式是不同的。

如果我們想要使用元組推導式獲得新元組或新元組中的元素,有以下三種方式:

使用 tuple() 函式,可以直接將生成器物件轉換成元組,例如:

a = (x for x in range(1,10))

print(tuple(a))

執行結果為:

(1, 2, 3, 4, 5, 6, 7, 8, 9)

2.直接使用 for 迴圈遍歷生成器物件,可以獲得各個元素,例如:

a = (x for x in range(1,10))

for i in a:

print(i,end=' ')

print(tuple(a))

執行結果為:

1 2 3 4 5 6 7 8 9 ()
3.使用 __next__() 方法遍歷生成器物件,也可以獲得各個元素,例如:

a = (x for x in range(3))

print(a.__next__())

print(a.__next__())

print(a.__next__())

a = tuple(a)

print("轉換後的元組:",a)

執行結果為:

012

轉換後的元組: ()

注意,無論是使用 for 迴圈遍歷生成器物件,還是使用 __next__() 方法遍歷生成器物件,遍歷後原生成器物件將不復存在,這就是遍歷後轉換原生成器物件卻得到空元組的原因。

Python 元組推導式

使用元組推導式可以快速生成乙個元組,其表現形式和列表推導式類似,只是將列表推導式中的中括號 修改為小括號 例如 生成乙個包含10個隨機數的元組。import random tuple1 random.randint 10,100 for i in range 10 print tuple1 執行結果...

Python列表推導式,集合推導式,元組推導式

先定義乙個列表a a 1,2,3,4,5,6,7,8 1a 1,2,3,4,5,6,7,8 列表推導 d i 2 for i in a 集合推導 e 元組推導 f i 2 for i in a print type d print type e print type f 輸出 123 4567 89...

Python元組 生成器推導式建立元組

生成器推導式建立元組 從形式上看,生成器推導式和列表推導式類似,只是生成器推導式使用小括號,列表推導式直接生成列表物件,生成器推導式生成的不是列表又不是元組,而是乙個生成器物件。我們可以通過生成器物件,轉成列表或者元組,也可以使用生成器物件 next 方法遍歷,或者直接使用迭代器物件來使用,不管什麼...