激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python中itertools模塊zip_longest函數詳解

python中itertools模塊zip_longest函數詳解

2021-03-04 00:03牛奶i豆漿 Python

itertools模塊包含創建高效迭代器的函數,這些函數的返回值不是list,而是iterator(可迭代對象),可以用各種方式對數據執行循環操作,今天我們來詳細探討下zip_longest函數

最近在看流暢的python,在看第14章節的itertools模塊,對其itertools中的相關函數實現的邏輯的實現

其中在zip_longest(it_obj1, ..., it_objN, fillvalue=None)時,其函數實現的功能和內置zip函數大致相同(實現一一對應),

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

以下是自己總結此函數的大致實現方法,和官方方法不同:

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

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

測試其結果:

?
1
2
3
res = zip_longest('abc', '12')
for x in res:
  print(x)

結果為:

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

原文鏈接:http://blog.51cto.com/smly1989/2128100

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美亚洲一区二区三区四区 | 黄色片在线观看网站 | 日韩黄在线 | 91香蕉影视 | 一区二区三区日本在线观看 | 欧美毛片在线观看 | 成人毛片视频免费 | 国产精品区一区二区三区 | 亚洲九草 | 真人一级毛片免费 | 欧美一级免费在线观看 | 久久久久久久一区二区 | 久草在线观看福利视频 | 亚洲福利在线视频 | 亚洲伊人色欲综合网 | 免费观看黄色一级视频 | 色综合久久久久久久久久 | 中文在线观看www | a黄网站 | 久久久久久久久久亚洲精品 | 毛片三区 | 国产大片全部免费看 | 在线免费观看日韩视频 | 最新欧美精品一区二区三区 | 狠狠干夜夜草 | 欧美激情 在线播放 | 92精品国产自产在线 | 91 免费看片| 成人短视频在线观看 | 欧美一级全黄 | 欧美中文字幕在线视频 | 毛片一级片 | 一区二区精品在线 | 欧美特黄特色视频 | 欧美a久久 | 黄在线观看在线播放720p | 免费国产一级淫片 | www.com国产精品 | 国产精品久久久网站 | 亚洲一区二区三区视频免费 | 精品久久久久久久久久久久久 |