国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品美女一区 | 亚洲精品日韩激情在线电影 | 成人av免费在线播放 | 91小视频| 日本精品一区 | 午夜看片在线观看 | 成人免费视频008 | 亚洲一区二区三区精品动漫 | 久久久国产精品久久久 | 日韩一区二区在线观看 | 精品黄色| 欧美 日韩 中文 | 中文字幕精品一区二区三区精品 | 亚洲一区二区三区在线播放 | 亚洲久草 | 日韩欧美国产精品 | 日韩不卡二区 | 欧洲成人 | 久综合网 | 日韩中文字幕视频在线观看 | 国产高清亚洲 | 蜜桃传媒一区二区 | 日韩欧美一区二区在线观看 | 久久专区| 国产毛片在线 | 亚洲欧美日韩另类精品一区二区三区 | 日韩欧美在线观看 | 国产成人一级片 | 成人h动漫精品一区二区樱花 | 日韩精品在线观看视频 | 日本在线免费视频 | 久久伊人精品 | 亚洲 欧美 日韩在线 | 欧美一级视频 | 欧美xo影院| 可以看的毛片网站 | 青青草99 | 日韩精品在线观看视频 | 91电影在线观看 | 成人在线小视频 | 天堂v在线视频 |