excelperfect 標簽:Python,,enumerate函數,zip函數 本文將通過幾個示例介紹Python中的enumerate()函數和zip()函數,。 enumerate()函數返回迭代iterables(列表,、字典、集等)中所有項的索引,,而zip()函數用于聚合或組合多個迭代,。 enumerate函數 Python中的enumerate()函數用于檢索迭代中所有項的索引。迭代是Python中的項的集合,,如列表,、字典和集。 雖然可以使用index()函數獲取迭代中某個項的索引,,但index()函數只返回該項第一次出現的索引,。例如,在下面腳本中的nums列表中,,整數20出現三次,。如果試圖打印整數20的索引,將只看到第一次出現的20的索引,,即索引位置2,。 nums= [10,15,20,25,30,14,20,19,34,14,20,12] index_20= nums.index(20) print(index_20) 結果如下圖1所示。 圖1 使用enumerate()函數,可以獲取所有項的索引,,即使它們在列表中出現多次,。enumerate()函數的作用是:返回“enumerate”類型的對象,如下面腳本的輸出所示,。 type_enum= type(enumerate(nums)) print(type_enum) 結果如下圖2所示,。 圖2 enumerate()函數的作用是:返回兩個項目的元組,其中第一個項目對應于索引,,而第二個項目對應于相應迭代中的實際項目,。可以將enumerate()函數返回的對象轉換為包含索引和相應項的元組列表,,如下所示: print(list(enumerate(nums))) 輸出結果如下圖3所示,。 圖3 現在,可以看到nums列表中的所有索引及其對應項,。注意,,還可以看到多次出現的項的索引,例如整數20和14,。 可以使用for循環(huán)遍歷enumerate()函數返回的元組,,如下面的代碼所示,其中第一個元組項通過索引0訪問,,而第二個元組項通過索引1訪問,。 for i in enumerate(nums): print('索引=>',i[0],' - 值 =>',i[1]) 結果如下圖4所示。 圖4 還可以使用元組解包直接訪問enumerate()函數返回的元組中的索引和項,。下面是一個例子: for i,j in enumerate(nums): print('索引=>',i,' - 值 =>',j) 結果如下圖5所示,。 圖5 作為另一個示例,下面的腳本演示了如何使用enumerate()函數獲取“nums”列表中整數20的所有索引,。 for i in enumerate(nums): if i[1] == 20: print('值 =>',i[1],' - 索引 =>',i[0]) 結果如下圖6所示,。 圖6 還可以通過向start參數傳遞一個值來重置enumerate()返回的元組的起始索引。例如,,下面的腳本將8設置為enumerate()函數返回的元組列表的起始索引值,。 for i in enumerate(nums, start = 8): print('索引=>',i[0], ' - 值 =>', i[1]) 結果如下圖7所示。 圖7 zip函數 Python中的zip()函數用于聚合多個迭代,。zip函數的作用是:返回一個元組列表,,其中每個元組包含來自原始迭代的匹配索引的項。 下面的腳本包含三個列表:names,、ages和genders,,每個列表有5項。這些列表通過zip()函數聚合,。如果打印zip()函數返回的元組列表,,將看到每個元組項都包含來自原始列表中匹配索引的項,。例如,第一個元組包含三個項:“john”,,20,,“male”。這三項分別出現在names,、ages和genders列表的第0個索引中。 names= ['john', 'nick', 'sally','Elizabeth', 'Mike'] ages= [20, 25, 35, 22, 29] genders= ['male', 'male', 'female', 'female','male'] records= list(zip(names, ages, genders)) print(records) 結果如下圖8所示,。 圖8 正如在enumerate()函數中看到的那樣,,可以使用元組解包從zip()函數返回的元組中獲取單個項。下面是一個例子: for name, age, gender in zip(names, ages, genders): print('姓名=>',name, ' - 年齡=>', age, ' -性別=>',gender) 結果如下圖9所示,。 圖9 在某些情況下,,使用zip()函數聚合或組合的迭代包含數量不等的項。在這種情況下,,只有來自多個迭代的項與最小迭代中的項相對應,,才會進行聚合。 例如,,在下面的腳本中,,genders列表只包含2項。在以下情況下,,使用zip()函數聚合names,、ages和genders列表將只返回兩個元組,其中包含names,、ages和genders列表的第0個和第1個索引中的項,。 names= ['john', 'nick', 'sally','Elizabeth', 'Mike'] ages= [20, 25, 35, 22, 29] genders= ['male', 'male'] records= list(zip(names, ages, genders)) print(records) 結果如下圖10所示。 圖10 enumerate與zip組合 還可以對zip()函數返回的輸出調用enumerate()函數,。在這種情況下,,enumerate()函數將返回元組,其中元組中第一個索引處的項將對應于zip()函數返回的元組的索引,,第二個索引處的項將對應于zip()函數返回的實際元組,。下面是一個示例。 names= ['john', 'nick', 'sally', 'Elizabeth','Mike'] ages= [20, 25, 35, 22, 29] genders= ['male', 'male', 'female', 'female','male'] for i, record in enumerate(zip(names, ages, genders)): print('索引=>',i, ' -姓名=>', record[0], ' -年齡=>',record[1], ' -性別=>', record[2]) 結果如下圖11所示,。 圖11 注意,,現在有一個列表的表,其中包含一個關聯(lián)的索引,。 注:本文學習整理自wellsr.com,,供有興趣的朋友參考。 歡迎在下面留言,,完善本文內容,,讓更多的人學到更完美的知識,。 歡迎到知識星球:完美Excel社群,進行技術交流和提問,,獲取更多電子資料,,并通過社群加入專門的微信討論群,更方便交流,。 |
|
來自: hercules028 > 《Python and AI》