国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-15 21:47:20
字體:
供稿:網(wǎng)友

最近在看流暢的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)所有迭代對象,以便進(jì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)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 唐海县| 兴宁市| 卢湾区| 黑水县| 东平县| 阿拉善左旗| 瑞安市| 聂拉木县| 曲水县| 甘谷县| 渑池县| 涿州市| 武隆县| 徐水县| 昔阳县| 桑日县| 南投市| 吉林省| 平潭县| 台山市| 浏阳市| 治县。| 海伦市| 深泽县| 棋牌| 霍邱县| 融水| 财经| 临清市| 蕲春县| 鄢陵县| 牙克石市| 天气| 安义县| 新河县| 鹿泉市| 台东县| 彰化县| 天水市| 秦安县| 青阳县|