python基礎(補充)之 枚舉函數:enumerate()


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參數,很好的幫我們解決了上述問題。

其實關於這個函數的用法,大家不必說要鑽的多深,掌握它最通俗的用法就夠了,相信它未來會幫助你很多。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM