On Thursday 08 December 2016 02:17, Rustom Mody wrote: > Trying to write some code using sets (well frozen sets) > And was hit by this anomaly > > This is the behavior of lists I analogously expect in sets: > >>>> [] > [] >>>> [[]] > [[]] >>>> > > ie the empty list and the list of the empty list are different things
That's a property of the *list display*, [], not the list() constructor. The list constructor takes an iterable of items, so if you pass it an empty iterable, you get an empty list: py> list([]) [] Since there's no frozenset display, there's no analogy with [[]], and you similarly get a single empty frozen set: py> frozenset([]) frozenset() Notice the repr()? Like list(), tuple(), set() and dict(), calling frozenset() with no arguments returns an empty frozenset: py> frozenset() frozenset() > And then some figuring out how to get an empty set into a set > This is the best I get: >>>> f([f([])]) > frozenset({frozenset()}) py> Ø = frozenset() py> frozenset([Ø]) frozenset({frozenset()}) -- Steven "Ever since I learned about confirmation bias, I've been seeing it everywhere." - Jon Ronson -- https://mail.python.org/mailman/listinfo/python-list