欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中itertools模塊zip_longest函數(shù)詳解

 更新時間:2018年06月12日 08:46:10   作者:牛奶i豆?jié){  
itertools模塊包含創(chuàng)建高效迭代器的函數(shù),這些函數(shù)的返回值不是list,而是iterator(可迭代對象),可以用各種方式對數(shù)據(jù)執(zhí)行循環(huán)操作,今天我們來詳細探討下zip_longest函數(shù)

最近在看流暢的python,在看第14章節(jié)的itertools模塊,對其itertools中的相關(guān)函數(shù)實現(xiàn)的邏輯的實現(xiàn)

其中在zip_longest(it_obj1, ..., it_objN, fillvalue=None)時,其函數(shù)實現(xiàn)的功能和內(nèi)置zip函數(shù)大致相同(實現(xiàn)一一對應(yīng)),

不過內(nèi)置的zip函數(shù)是已元素最少對象為基準,而zip_longest函數(shù)是已元素最多對象為基準,使用fillvalue的值來填充

以下是自己總結(jié)此函數(shù)的大致實現(xiàn)方法,和官方方法不同:

思路大致如此: 找出元素個數(shù)最多 ==>算出元素個數(shù)差值==>填充差值個元素到各個對象

def zip_longest(*it, **kwargs):
  its = {k: len(k) for k in it}   # 這里我是用字典把參數(shù)對象和參數(shù)的元素個數(shù)結(jié)果作為一個字典
  max_num = max(its.values())    # 確定迭代對象元素最大值 
  result = []            # 
  fillvalue = kwargs.get('fillvalue', None) # 元素較少的填充值
  for x in range(max_num):     # 已最大次為基準循環(huán)
    result = []
    for it in its:        # 循環(huán)所有迭代對象,以便進行填充數(shù)據(jù)
      element = list(it)    # 將
      if len(it) < max_num:   # 如果迭代對象的元素個數(shù)比最大值小,則要填充數(shù)據(jù)
        for i in range(max_num - len(it)): # 此為要填充數(shù)據(jù)的個數(shù)
          element.append(fillvalue)    # 填充操作,完成后所有的迭代對象的元素個數(shù)都為一致    
      result.append(element[x])        # 生成一一對應(yīng)結(jié)果,存放到list中
    yield tuple(result)             # 將結(jié)果輸出

測試其結(jié)果:

res = zip_longest('abc', '12')
for x in res:
  print(x)

結(jié)果為:

('a', '1')
('b', '2')
('c', None)

相關(guān)文章

  • 使用Matlab將矩陣保存到csv和txt文件

    使用Matlab將矩陣保存到csv和txt文件

    這篇文章主要介紹了使用Matlab將矩陣保存到csv和txt文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python GUI庫圖形界面開發(fā)之PyQt5計數(shù)器控件QSpinBox詳細使用方法與實例

    python GUI庫圖形界面開發(fā)之PyQt5計數(shù)器控件QSpinBox詳細使用方法與實例

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5計數(shù)器控件QSpinBox詳細使用方法與實例,需要的朋友可以參考下
    2020-02-02
  • Pytorch 使用CNN圖像分類的實現(xiàn)

    Pytorch 使用CNN圖像分類的實現(xiàn)

    這篇文章主要介紹了Pytorch 使用CNN圖像分類的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Python爬蟲之重放攻擊原理實例詳解

    Python爬蟲之重放攻擊原理實例詳解

    重放攻擊是一種網(wǎng)絡(luò)攻擊方式,攻擊者通過截獲合法用戶的請求,并將其重新發(fā)送,以模擬合法用戶的行為,在Python爬蟲領(lǐng)域,了解重放攻擊的原理和防范方法至關(guān)重要,本文將深入介紹重放攻擊的概念、示例代碼演示以及防范措施,幫助大家更好地理解和應(yīng)對這一威脅
    2023-12-12
  • tensorflow 實現(xiàn)自定義梯度反向傳播代碼

    tensorflow 實現(xiàn)自定義梯度反向傳播代碼

    今天小編就為大家分享一篇tensorflow 實現(xiàn)自定義梯度反向傳播代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python數(shù)據(jù)類型詳解(三)元祖:tuple

    Python數(shù)據(jù)類型詳解(三)元祖:tuple

    本文給大家介紹的是Python數(shù)據(jù)類型中的元祖(tuple),簡單的說Tuple,與列表一樣,元素也是不可變的,但與列表不同,在一個元祖可以包含不同類型的元素
    2016-05-05
  • 在Pytorch中使用樣本權(quán)重(sample_weight)的正確方法

    在Pytorch中使用樣本權(quán)重(sample_weight)的正確方法

    今天小編就為大家分享一篇在Pytorch中使用樣本權(quán)重(sample_weight)的正確方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 詳解Python3遷移接口變化采坑記

    詳解Python3遷移接口變化采坑記

    這篇文章主要介紹了詳解Python3遷移接口變化采坑記,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • python雙向鏈表實例詳解

    python雙向鏈表實例詳解

    這篇文章主要為大家詳細介紹了python雙向鏈表實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • python用10行代碼實現(xiàn)對黃色圖片的檢測功能

    python用10行代碼實現(xiàn)對黃色圖片的檢測功能

    這篇文章主要介紹了python用10行代碼實現(xiàn)對黃色圖片的檢測功能,涉及Python基于圖片庫PIL對圖片的檢測技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08

最新評論