Comparing a matrix (list[][]) ?

jairodsl jairodsl at gmail.com
Sat Jan 13 20:10:56 EST 2007


Thanks a lot, it was that i need !!! Works very good !

bearophileHUGS at lycos.com wrote:
> Roberto Bonvallet:
> > What output are you expecting from your example matrix?  If you are expecting
> > it to be 5 (the smallest positive element), using "min" is the way to do it:
> >     >>> matrix = [[9,  8, 12, 15],
> >     ...           [0, 11, 15, 18],
> >     ...           [0,  0, 10, 13],
> >     ...           [0,  0,  0,  5]]
> >     >>> min(min(x for x in row if x > 0) for row in matrix)
> >     5
>
> This looks a bit like homework...
> To find the minimal number > 0 of the matrix this seems better:
>
> mat = [[9, 8,  12, 15],
>        [0, 11, 15, 18],
>        [0,  0, 10, 13],
>        [0,  0,  0,  5]]
>
> print min(el for row in mat for el in row if el > 0)
>
> Note that this raises TypeError is the matrix doesn't have one or more
> numbers > 0
> If the OP needs the position he/she can do something like:
>
> nozeromin = 1e300 # or something similar
> pos = None, None
>
> for nrow, row in enumerate(mat):
>     for ncol, el in enumerate(row):
>         if el > 0 and el < nozeromin:
>             nozeromin = el
>             pos = nrow, ncol
> 
> print nozeromin, pos
> 
> Bye,
> bearophile




More information about the Python-list mailing list