Tweet-w1704

2017.01

在Python中,使用yield实现生成器。生成器的性质是只有在被迭代的时候才运行其内部的代码。这样可以大大降低内存的占用。除此之外,yield还可以接收参数供生成器内部使用。

def generator(top):
       index = 0
       while index <= top:
              value_from_out = yield index ** 2
              print('来自外面的值为:{}'.format(value_from_out))
              index += 1power_2 = generator(10)
print(next(power_2))
print(next(power_2))
print(power_2.send("next(power_2) 相当于power_2.send(None)"))
print(next(power_2))
print(power_2.send('代码在函数和这里来回跳。'))

输出结果为:

0
来自外面的值为:None
1
来自外面的值为:next(power_2) 相当于power_2.send(None)
4
来自外面的值为:None
9
来自外面的值为:代码在函数和这里来回跳。
16

以上的运行方式,和协程非常的相似。


逆波兰式通过栈来实现对表达式的运算。例如:

中缀表达式: 5 + ((1 + 2) 4) − 3 逆波兰式:5 1 2 + 4 + 3 −


使用调度场算法可以将中缀表达式转换为逆波兰式。调度场算法是通过栈来实现的。操作数直接输出,符号需要判断优先级来判断应该直接压栈还是直接输出或者应该先将栈顶元素输出再压栈。

原文发布于微信公众号 - 未闻Code(itskingname)

原文发表时间:2017-01-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券