永恒的蓝色梦想 发表于 2020-4-3 09:19:17

Python 实现 itertools.chain

两种实现def chain(*iterables):
    for iterable in iterables:
      yield from iterableclass chain:
    def __init__(self,*iterables):
      self.__iterables=map(iter,iterables)
      self.__doing=self.__iterables.__next__()

    def __iter__(self):
      return self

    def __next__(self):
      while True:
            try:
                return next(self.__doing)
            
            except StopIteration:
                self.__doing=self.__iterables.__next__()

    @classmethod
    def from_iterable(cls,iterable,/):
      return cls(*iterable)如果代码有错误,欢迎在评论区指正{:10_323:}

qiuyouzhi 发表于 2020-4-3 10:10:05

用yield from会提高代码运行速度吗?

_2_ 发表于 2020-4-3 12:02:45

qiuyouzhi 发表于 2020-4-3 10:10
用yield from会提高代码运行速度吗?

自己用 IPython 试试

永恒的蓝色梦想 发表于 2020-4-3 12:19:12

qiuyouzhi 发表于 2020-4-3 10:10
用yield from会提高代码运行速度吗?

不知道,写起来简单倒是真的
页: [1]
查看完整版本: Python 实现 itertools.chain