On Mon, Jan 20, 2003 at 10:32:50AM -0500, Tim Peters wrote: > [Tim] > >Tuples can't be recursive, > > [Guido] > > Oh yes they can be: > > > > >>> L = [] > > >>> t = (L, L) > > >>> L.append(L) > > >>> > > That's an example of a tuple *containing* a recursive structure; there's > still no way, starting at t, to get back to t. I think mutation is required > for that. Like > > L = [None] > t = (L, L) > L[0] = t > > Then > > t[0]0] is t > > and that's what I mean by "recursive tuple" (a tuple that can be reached > from itself). Is this an example of the elusive "recursive tuple"? class X(tuple): def __getitem__(self, idx): if idx == 0: return self return tuple.__getitem__(self, idx) def __len__(self): return min(1, tuple.__len__(self)) >>> x = X([None]) >>> print len(x), x[0] is x, x==x 1 True True >>> print x (None,) I'm also a bit confused by the last line. I guess the builtin tuple.__repr__ uses the C-level API to access tuple items, not the real __getitem__ slot? pprint shows the same thing, though. Jeff
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4