Index: pyyaml/trunk/lib/yaml/representer.py
===================================================================
--- pyyaml/trunk/lib/yaml/representer.py	(revision 139)
+++ pyyaml/trunk/lib/yaml/representer.py	(revision 143)
@@ -64,5 +64,5 @@
         data_types = type(data).__mro__
         if type(data) is self.instance_type:
-            data_types = self.get_classobj_bases(data.__class__)+data_types
+            data_types = self.get_classobj_bases(data.__class__)+list(data_types)
         for data_type in data_types:
             if data_type in self.yaml_representers:
@@ -292,8 +292,12 @@
 
     def represent_complex(self, data):
-        if data.real != 0.0:
+        if data.imag == 0.0:
+            data = u'%r' % data.real
+        elif data.real == 0.0:
+            data = u'%rj' % data.imag
+        elif data.imag > 0:
             data = u'%r+%rj' % (data.real, data.imag)
         else:
-            data = u'%rj' % data.imag
+            data = u'%r%rj' % (data.real, data.imag)
         return self.represent_scalar(u'tag:yaml.org,2002:python/complex', data)
 
