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