Raymond Hettinger wrote: >> should the repr for a set be set({a, b, c}) >> instead of set([a, b, c])? > > FWIW, running eval() on the repr is slower and less memory efficient with > curly braces than with the square brackets.
This is what I get. >>> timeit.timeit("eval('frozenset({1,2,3})')") 48.011682987213135 >>> timeit.timeit("eval('frozenset([1,2,3])')") 48.155133962631226 >>> timeit.timeit("eval('frozenset((1,2,3))')") 48.062387943267822 >>> timeit.timeit("eval('set({1,2,3})')") 46.738940000534058 >>> timeit.timeit("eval('set([1,2,3])')") 47.597666025161743 >>> timeit.timeit("eval('set((1,2,3))')") 47.087898969650269 It's all very close. I think the frozenset({1,2,3}) example will get faster if {..} notation becomes a frozen set, and set({...}) example will slow down a bit. > Also, it may be easily misread as meaning: set([frozenset([a, b, c])]). If > the latter is intended, then that would become set({{a, b, c}}) which I find > hard to parse correctly. Maybe the set([a, b, c]) form should live on. > > Raymond You added an extra level of nesting. set(frozenset([a, b, c])) isn't any harder to parse (to me) than the equivalent tuple or list versions of the same forms: list(tuple([a, b, c]) and tuple(list([a, b, c]). Ron _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com