Hello, I have some code that stops when trying to find a graph in a list of similar graphs::
(Pydb) list 110 try: 111 canonical = self.base[self.base.index(graph)] 112 except ValueError: 113 raise ValueError, \ 114 "Cannot find canonical representative for graph `%s`." \ 115 -> % (repr(graph),) 116 .... The list `self.base` contains "canonical" forms of the graphs and the `graph` object must compare equal to some item of the list, which indeed it does:: (Pydb) p graph == self.base[27] True (Pydb) p graph in self.base True However, I cannot directly get the index of the canonical graph (the number "27" above was found by manual inspection):: (Pydb) self.base.index(graph) *** ValueError: list.index(x): x not in list All graphs are instances of a `Graph` new-style class that implements comparison operators `__eq__` and `__ne__`, but no other rich-compare stuff. I'm using Python 2.5:: Python 2.5 (release25-maint, Dec 9 2006, 16:17:58) [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-20)] on linux2 So my question is: what are the implementation differences between `x in list` and `list.index(x)` and why can one report that an item is in the list while the other cannot find its index? Should I add something to the `Graph` class so that `index` works? Thanks for any hint! -- Riccardo Murri, via Galeazzo Alessi 61, 00176 Roma -- http://mail.python.org/mailman/listinfo/python-list