Is there a better algorithm?

Hendrik van Rooyen mail at microcorp.co.za
Sat Jan 3 03:40:39 EST 2009


bearophile wrote:

>Fuzzyman:
>
>> for i in l:
>>  u = None
>>  if len(i) == 2:
>>   k, v = i
>>  else:
>>   k, u, v = i
>
>That's the best solution I have seen in this thread so far (but I
>suggest to improve indents and use better variable names). In
>programming it's generally better to follow the KISS principle.

Strange that nobody has suggested:

for Tup in Lst:
  for item in Tup:
    print item,
  print

Because if I recall correctly, all the OP was doing was printing the stuff.

Gets a bit hairier if you want to return the values though. - if you
replace the first print statement above with a yield and delete the
second, bare print, you lose knowledge of which tuple the item 
belongs to.

It is not trivial to do if you don't have a priori knowledge of
the maximum and minimum tuple length.

Seems to me it is one of those gems that is a PITA to do completely 
generally - basically because you don't know when you call it how
many items to unpack - so you have to return a count or something,
or just fall back on a two step approach - get the tuple from the list,
then do something with the items in the tuple.

- Hendrik





More information about the Python-list mailing list