自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501
使用元組推導式可以快速生成一個元組,它的表現形式和列表推導式類似,只是將列表推導式中的“[]”修改為“()”。例如,我們可以使用下面的代碼生成一個包含10個隨機數的元組。
import?random???????????????????????????????????#?導入random標準庫
randomnumber = (random.randint(10,100)?for?i?in?range(10))
print("生成的元組為:",randomnumber)
執行結果如下:
生成的元組為:?<generator object <genexpr> at 0x0000000003056620>
從上面的執行結果中,可以看出使用元組推導式生成的結果并不是一個元組或者列表,而是一個生成器對象,這一點和列表推導式是不同的。要使用該生成器對象可以將其轉換為元組或者列表。其中,轉換為元組使用tuple()函數,而轉換為列表則使用list()函數。
例如,使用元組推導式生成一個包含10個隨機數的生成器對象,然后將其轉換為元組并輸出,可以使用下面的代碼:
import?random???????????????????????????????????#?導入random標準庫
randomnumber = (random.randint(10,100)?for?i?in?range(10))
randomnumber =?tuple(randomnumber)????????????????#?轉換為元組
print("轉換后:",randomnumber)
執行結果如下:
轉換后:?(76, 54, 74, 63, 61, 71, 53, 75, 61, 55)
要使用通過元組推導器生成的生成器對象,還可以直接通過for循環遍歷或者直接使用__next__()方法進行遍歷。
說明:在Python 2.x中,__next__()方法對應的方法為next()方法,也是用于遍歷生成器對象的。
例如,通過生成器推導式生成一個包含3個元素的生成器對象number,然后調用3次__next__()方法輸出每個元素的值,再將生成器對象number轉換為元組輸出,代碼如下:
number = (i?for?i?in?range(3))
print(number.__next__())??????????????????#?輸出第1個元素
print(number.__next__())??????????????????#?輸出第2個元素
print(number.__next__())???????????????????#?輸出第3個元素
number =?tuple(number)??????????????????#?轉換為元組
print("轉換后:",number)
上面的代碼運行后,將顯示以下結果:
0
1
2
轉換后:?()
再如,通過生成器推導式生成一個包括4個元素的生成器對象number,然后應用for循環遍歷該生成器對象,并輸出每一個元素的值,最后再將其轉換為元組輸出,代碼如下:
number = (i?for?i?in?range(4))??????????#?生成生成器對象
for?i?in?number:??????????????????????????#?遍歷生成器對象
????print(i,end=" ")??????????????????????#?輸出每個元素的值
print(tuple(number))???????????????????#?轉換為元組輸出
執行結果如下:
0 1 2 3 ()
從上面的兩個示例中可以看出,無論通過哪種方法遍歷,如果再想使用該生成器對象,都必須重新創建一個生成器對象,因為遍歷后原生成器對象已經不存在了。