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

enumerate() 函數的簡單介紹

enumerate() 函數的概念:

  • enumerate() 函數:用於將一個可迭代的數據對象(如列表、元組或字符串)組合爲一個索引序列,同時列出數據和數據下標,通常用在 for 循環當中。

再來看看enumerate() 函數的語法結構:函數

  • enumerate(sequence, [start=0]),其中sequence是一個可迭代序列,start是一個可選參數,表示序列下標的起始位置;

關於enumerate()函數,有如下幾點須要注意:

  • ① enumerate()函數是Python中的內置函數,能夠直接配合for循環使用;
  • ② 默認狀況下,start參數索引計數器是從零開始計數的,可是你能夠將其設置爲任意的整數;
  • ③ enumerate()函數獲得的是多個值,咱們須要採用「序列解包」的方式,獲取到每個元素;

可迭代對象和序列解包

可迭代對象

通俗的講:可迭代指的就是咱們能夠循環獲取其中的每個元素。某對象可使用for循環的必要條件是該對象是可迭代的。code

你可能還不知道什麼是可迭代對象,這裏也不過多的去解釋,你若是想深刻了解它,能夠自行下去查資料,可是這裏我要講述 「如何判斷一個對象是可迭代對象」對象

  • 能夠經過內置函數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循環。blog

在Python基礎中,咱們還將到了一個「序列」的概念,其實序列也是一種可迭代對象,其中列表( list)、元組( tuple)、字符串( str)等都是序列,所以它們也都是可迭代對象,也就均可以配合enumerate()函數使用了。索引

序列解包

通俗的說:就是一次將多個變量賦值給多個值。很簡單,不要想的過高深,咱們簡單舉個例子你就知道了。element

x, y = (12, 54)
print(x)  # 12
print(y)  # 54

結果以下:字符串

enumerate() 函數的簡單使用

該函數最常就是配合for循環使用,咱們就以此爲例,爲你們演示enumerate() 函數的用法。io

需求:打印出班級中大於18歲的同窗名字;for循環

若是使用普通的for循環:import

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

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

相關文章
相關標籤/搜索