#!/usr/bin/env python3
# -- coding: utf-8 --
# @Date : 2018-07-12 16:14:53
# @Author : Simon (simon.xie@codewalker.meg)
# @Link : http://www.codewalker.me
# @Version : 1.0.0
a_list = [ x for x in range(5)]
print(‘we have a list: {}’.format(a_list))
pick_one_item = iter(a_list)
print(next(pick_one_item))
print(next(pick_one_item))
print(next(pick_one_item))
print(next(pick_one_item))
print(next(pick_one_item))
# print(next(pick_one_item))
# Traceback (most recent call last):
# File “/Users/codewalkertes/Documents/script/python/yield_produce_consume.py”, line 15, in # print(next(pick_one_item))
# StopIteration
print(‘now we can see each of them we call next(), it will pick one item of list’)
print(‘But notic that it will throght out a stopIteration exception when cross the bounds’)
print(‘-‘*20)

def native_way(n):
num, nums = 0, []
while num < n:
nums.append(num)
num += 1
return nums

def genrator_way(n):
num = 0
while num < n:
yield num
num += 1
print(sum(native_way(100)))
print(sum(genrator_way(100)))
print(‘-‘*20)