Python生成器不会迭代

时间:2016-10-09 02:57:01

标签: python python-3.x

我正在尝试进行树遍历,但问题是yield返回一个生成器对象,但我无法迭代生成器对象。我是python的新手,所以任何帮助都会受到赞赏。

def inorder_keys(self):
    try:
        if self.flag:
            self.head = self.root
            self.head_key = self.root_key
            self.flag = False
        if self.head.left is not None:
            self.head_key = self.head.left
            self.head = self.dict_of_keys[self.head_key]
            BinarySearchTreeDict.inorder_keys(self)
        else:
            yield self.head_key
            yield self.head.parent
            #print(self.head_key)
            #print(self.head.parent)
            temp = self.head.parent
            self.head = self.dict_of_keys[temp]
            self.head = self.dict_of_keys[self.head.right]
            BinarySearchTreeDict.inorder_keys(self)
    except KeyError:
        self.flag = True
    pass



try:
    x = object01.inorder_keys()
    print(''.join(x))
except Exception as e:
    print(str(e))

输出:

C:\Python34\python.exe "...\output.py"
Process finished with exit code 0

1 个答案:

答案 0 :(得分:0)

所以,你的数据结构对我来说似乎很奇怪,但这里是你想要使用的一般模式:

function combine_array($a,$b){
    $res = [];
    if(count($a)==count($b)){
      // The count function returns the size of an array
      for($i=0;$i<count($a);$i++){
        $res[$i] = $a[$i]."_".$b[$i];
      }
      return $res;
    }
   return false;
}

如果我正确理解您的数据结构,就是这样。