On Thu, Nov 27, 2008 at 2:39 PM, TP <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > >>> >>> a=("1","2") >>> >>> b=[("3","4"),("5","6")] >>> >>> list(a)+b >>> ['1', '2', ('3', '4'), ('5', '6')] >> >>>>> a = ("1", "2") >>>>> b = [("3", "4"), ("5", "6")] >>>>> [a] + b >> [('1', '2'), ('3', '4'), ('5', '6')] > > Thanks a lot. > Why this difference of behavior between list(a) and [a]?
Because list() is used to convert other iterable types into lists (e.g. list("abc") ==> ['a','b','c'], list((c,d)) ==> [c,d], list(set(x,y,z)) ==> [y, z, x]). In contrast, a list literal just constructs a list. This makes sense because the behavior of list() is useful and you can just use the literal syntax instead for cases such as yours. In Python 3.0, I believe you'll be able to use the splat operator to do e.g. [a, *b] to get your desired result. For reference: list(a) <==> [x for x in a] [a,b,c] <==> list((a,b,c)) Cheers, Chris -- Follow the path of the Iguana... http://rebertia.com > > Julien > > -- > python -c "print ''.join([chr(154 - ord(c)) for c in '*9(9&(18%.9&1+,\'Z > (55l4('])" > > "When a distinguished but elderly scientist states that something is > possible, he is almost certainly right. When he states that something is > impossible, he is very probably wrong." (first law of AC Clarke) > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list