Mike Meyer wrote: > It seems that the distinction between tuples and lists has slowly been > fading away. What we call "tuple unpacking" works fine with lists on > either side of the assignment, and iterators on the values side. IIRC, > "apply" used to require that the second argument be a tuple; it now > accepts sequences, and has been depreciated in favor of *args, which > accepts not only sequences but iterators. > > Is there any place in the language that still requires tuples instead > of sequences, except for use as dictionary keys?
Would it be possible to optimize your "frozenlist" so that the objects would be created during compilation time and rather than only during runtime? If not then tuples() have a distinct performance advantage in code like the following where they are used as local constants: >>> def func(x): ... if x in (1, 3, 5, 7, 8): ... print 'x is really odd' ... >>> import dis >>> dis.dis(func) .... 3 20 LOAD_FAST 0 (x) 23 LOAD_CONST 8 ((1, 3, 5, 7, 8)) 26 COMPARE_OP 6 (in) >>> def func(x): ... if x in [1,3,5,7,8]: ... print 'x is really odd' ... >>> dis.dis(func) ... 3 20 LOAD_FAST 0 (x) 23 LOAD_CONST 2 (1) 26 LOAD_CONST 3 (3) 29 LOAD_CONST 4 (5) 32 LOAD_CONST 5 (7) 35 LOAD_CONST 6 (8) 38 BUILD_LIST 5 41 COMPARE_OP 6 (in) -Peter -- http://mail.python.org/mailman/listinfo/python-list