永恒的蓝色梦想 发表于 2020-4-2 20:12:33

Python 实现 itertools.zip_longest

两种实现def zip_longest(*iterables, fillvalue=None):
    iterators=tuple(iter(i) for i in iterables)

    while True:
      temp=[]
      flag=True

      for i in iterators:
            try:
                temp.append(next(i))
                flag=False

            except StopIteration:
                temp.append(fillvalue)

      if flag:
            break

      yield tuple(temp)class zip_longest:
    def __init__(self,*iterables,fillvalue=None):
      self.__iterators=tuple(iter(i) for i in iterables)
      self.__filevalue=fillvalue

    def __iter__(self):
      return self

    def __next__(self):
      temp=[]
      flag=True

      for i in self.__iterators:
            try:
                temp.append(next(i))
                flag=False
            
            except StopIteration:
                temp.append(self.__filevalue)

      if flag:
            raise StopIteration

      return tuple(temp)如果代码有问题,欢迎在评论区留言指出!{:10_323:}

_2_ 发表于 2020-4-4 09:34:58

渣渣表示没用过
页: [1]
查看完整版本: Python 实现 itertools.zip_longest