how to find the longst element list of lists

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Sun Jan 7 17:11:59 EST 2007


Michael M. a écrit :
> How to find the longst element list of lists?

For what definition of "find" ? You want the lenght of the longest 
sublist, it's index, or a reference to it ?

> I think, there should be an easier way then this:
> 
>   s1 = ["q", "e", "d"]
>   s2 = ["a", "b"]
>   s3 = ["a", "b", "c", "d"]

Err... this makes three distinct lists, not a list of lists.

>   if len(s1) >= len(s2) and len(s1) >= len(s3):
>     sx1=s1  ## s1 ist längster
>     if len(s2) >= len(s3):
>       sx2=s2
>       sx3=s3
>     else:
>       sx2=s3
>       sx3=s2
> 
(snip repeated code)

Looks like it would be time to learn how to factor out repetitions...

> After, the list ist sorted:
> 
>   sx1 = ["a", "b", "c", "d"]
>   sx2 = ["q", "e", "d"]
>   sx3 = ["a", "b"]
> 

This is still not a list of lists. Now for the answer, sorted() is your 
friend:

print sorted([s1, s2, s3], key=list.__len__, reverse=True)
=> [['a', 'b', 'c', 'd'], ['q', 'e', 'd'], ['a', 'b']]

# Or if you really want sx1, sx2 and sx3:
sx1, sx2, sx3 = sorted([s1, s2, s3], key=list.__len__, reverse=True)


Is that easier enough ?-)



More information about the Python-list mailing list