yield具有 懒惰 的巨大优势,速度通常不是使用它的 最佳 理由。但是,如果它在您的上下文中起作用,则没有理由不使用它:
# yield_vs_append.pydata = range(1000)def yielding(): def yielder(): for d in data: yield d return list(yielder())def appending(): lst = [] for d in data: lst.append(d) return lst
结果如下:
python2.7 -m timeit -s "from yield_vs_append import yielding,appending" "yielding()"10000 loops, best of 3: 80.1 usec per looppython2.7 -m timeit -s "from yield_vs_append import yielding,appending" "appending()"10000 loops, best of 3: 130 usec per loop
至少在这个非常简单的测试中,
yield它比附加速度更快。



