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