python中itertools模塊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ù)是已元素最少對象為基準(zhǔn),而zip_longest函數(shù)是已元素最多對象為基準(zhǔn),使用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): # 已最大次為基準(zhǔn)循環(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)文章
PyTorch中flatten()?函數(shù)的用法實例小結(jié)
在PyTorch中,flatten函數(shù)的作用是將一個多維的張量轉(zhuǎn)換為一維的向量,它可以將任意形狀的張量轉(zhuǎn)換為一維,而不需要指定轉(zhuǎn)換后的大小,這篇文章主要介紹了PyTorch中flatten()?函數(shù)的用法,需要的朋友可以參考下2023-11-11
Python使用正則表達式抓取網(wǎng)頁圖片的方法示例
這篇文章主要介紹了Python使用正則表達式抓取網(wǎng)頁圖片的方法,結(jié)合具體實例形式分析了Python網(wǎng)頁文件的讀取及正則匹配相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟
數(shù)據(jù)庫非常重要,程序的數(shù)據(jù)增刪改查需要數(shù)據(jù)庫支持,python處理數(shù)據(jù)庫非常簡單,而且不同類型的數(shù)據(jù)庫處理邏輯方式大同小異,下面這篇文章主要給大家介紹了關(guān)于Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟,需要的朋友可以參考下2022-07-07
Numpy中的數(shù)組搜索中np.where方法詳細介紹
這篇文章主要介紹了Numpy中的數(shù)組搜索中np.where方法詳細介紹,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Python實現(xiàn)截圖生成符合markdown的鏈接
之前是用的是typora來寫的文章,最近typora最近開始收費了,所以就不想用了,于是找到了一個替代品MarkText。本文將介紹如何通過Python實現(xiàn)截圖自動生成符合markdown的鏈接,感興趣的可以了解一下2022-01-01
python實現(xiàn)QQ定時發(fā)送新年祝福信息
大家好,本篇文章主要講的是python實現(xiàn)QQ定時發(fā)送新年祝福信息,感興趣的同學(xué)感快來看一看吧,對你有幫助的話記得收藏一下2022-02-02

