how to construct a list of only one tuple

Chris Rebert clp at rebertia.com
Thu Nov 27 18:16:04 EST 2008


On Thu, Nov 27, 2008 at 2:39 PM, TP <Tribulations at paralleles.invalid> wrote:
> bearophileHUGS at lycos.com 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
>



More information about the Python-list mailing list