enumerate() 函式的簡單介紹
enumerate() 函式的概念:
- enumerate() 函式:用于將一個可迭代的資料物件(如串列、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在 for 回圈當中,
再來看看enumerate() 函式的語法結構:
- enumerate(sequence, [start=0]),其中sequence是一個可迭代序列,start是一個可選引數,表示序列下標的起始位置;
關于enumerate()函式,有以下幾點需要注意:
- ① enumerate()函式是Python中的內置函式,可以直接配合for回圈使用;
- ② 默認情況下,start引數索引計數器是從零開始計數的,但是你可以將其設定為任意的整數;
- ③ enumerate()函式得到的是多個值,我們需要采用“序列解包”的方式,獲取到每一個元素;
可迭代物件和序列解包
可迭代物件
通俗的講:可迭代指的就是我們可以回圈獲取其中的每一個元素,某物件可以使用for回圈的必要條件是該物件是可迭代的,
你可能還不知道什么是可迭代物件,這里也不過多的去解釋,你如果想深入了解它,可以自行下去查資料,但是這里我要講述 “如何判斷一個物件是可迭代物件”,
- 可以通過內置函式isinstance()來判斷一個物件是否為可迭代物件,
from collections.abc import Iterable
print(isinstance("梁某人", Iterable))
# True
print(isinstance([1,True,2.3],Iterable))
# True
print(isinstance(1, Iterable))
# False
print(isinstance(range(10), Iterable))
# True
通過上述代碼演示,我們就知道哪些物件是可迭代物件,可以使用for回圈,哪些物件不是可迭代物件,也不能使用for回圈,
在Python基礎中,我們還將到了一個“序列”的概念,其實序列也是一種可迭代物件,其中串列( list)、元組( tuple)、字串( str)等都是序列,因此它們也都是可迭代物件,也就都可以配合enumerate()函式使用了,
序列解包
通俗的說:就是一次將多個變數賦值給多個值,很簡單,不要想的太高深,我們簡單舉個例子你就知道了,
x, y = (12, 54)
print(x) # 12
print(y) # 54
結果如下:

enumerate() 函式的簡單使用
該函式最常就是配合for回圈使用,我們就以此為例,為大家演示enumerate() 函式的用法,
需求:列印出班級中大于18歲的同學名字;
如果使用普通的for回圈:
i = 0
name = ["張三", "李四", "王五"]
lis = [13, 22, 43]
for element in lis:
if element >= 18:
print(i, name[i], lis[i])
i += 1
結果如下:

如果for回圈,配合enumerate()函式使用:
name = ["張三", "李四", "王五"]
lis = [13, 22, 43]
for index, value in enumerate(lis):
if value >= 18:
print(index, name[index], value)
結果如下:

普通for回圈我也就不多說了,仔細觀察for回圈+enumerate()函式的搭配使用,序列使用過該函式后,會回傳元素下標和元素組合的元組,我們采用序列解包的方式,將其賦值給了index和value,其中index表示lis串列中每個元素的下標,value表示lis串列中每個元素的值,如下圖所示:

接著再仔細觀察上圖,可以發現:enumerate()函式默認序列第一個元素的下標為0,這個也是和Python中序列的元素訪問一致,但是有時候,我們就想讓第一個元素的下標變為1,第二個元素的下標變為2,怎么辦呢?

從上圖可以看出:enumerate()函式中有一個start引數,很好的幫我們解決了上述問題,
其實關于這個函式的用法,大家不必說要鉆的多深,掌握它最通俗的用法就夠了,相信它未來會幫助你很多,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/276090.html
標籤:其他
上一篇:TCP 和 UDP 協議簡介
