Why tuple with one item is no tuple
Reinhold Birkenfeld
reinhold-birkenfeld-nospam at wolke7.net
Tue Mar 15 20:34:44 CET 2005
Bill Mill wrote:
> On Tue, 15 Mar 2005 10:47:28 -0800, James Stroud <jstroud at mbi.ucla.edu> wrote:
>> On Tuesday 15 March 2005 08:25 am, Roy Smith wrote:
>> > a = () # tuple of zero elements
>> > a = (1,) # tuple of one element
>> > a = 1, # tuple of one element
>> > a = (1) # scalar
>> > a = (1, 2) # tuple of two elements
>> > a = 1, 2 # tuple of two elements
>> > a = , # syntax error
>> >
>> > The big question is, is it the parens that make it a tuple, or is it
>> > the comma? If you go along with the parens school of thought, then
>> > (1,) is the special case. If you believe in commas, then the () is
>> > the special case. In either case, it's a bit ugly, but we learn to
>> > overlook the occasional cosmetic blemishes of those we love :-)
>>
>> The answer is obvious, the naked comma should be an empty tuple.
>>
>
> The other answer, that parens should be required to surround all
> tuples, is obvious too.
>
> Neither is particularly appealing; a lone comma creating a data
> structure seems counter-intuitive, but it's nice to do a, b = b, a
> instead of (a, b) = (b, a) . In this case, since the need to create
> empty tuples is vanishingly rare, I'm okay with a little
> inconsistency.
And if you don't like it at all, you can still use tuple() to "create"
an empty tuple.
Reinhold
More information about the Python-list
mailing list