Python yield

| 分类 编程  标签 Python 

最近做foobar最大的收获是认识到了差距,虽然做到了 level 3,但是算法和数据结构基本还给老师,而且对 Python 语言还有很多细节不了解,通过做题和看别人的解答明白,其中之一就是 yield。

题目

这道Zombit Infection题其实是遍历一个二维数组,只不过遍历的顺序有限制,同时有一个值的限制条件,只有数组中的值大于某个阀值(函数中设定)数组中的值才会被设定为-1。

我的思路

  • 刚开始的思路是把这个数组转换为一个树,这样遍历就方便了。不过存储空间就浪费了,另外如果树能用递归遍历为啥这个数组不行?
  • 最终方法是通过深度遍历的思路遍历,代码在此

别人的思路

将递归替换成了遍历,效率提升很多,秘诀就在于 yield。 将已经遍历的元素放进一个列表,待遍历的放进yield 产生的 generator 中,不断的遍历时这两个列表都在不断改变。用 for 循环肯定不好使,yield 很好的解决了这个问题

yield 用法


上一篇     下一篇