On 28 June 2013 15:38, Vincent Davis <vinc...@vincentdavis.net> wrote: > I have a list of a list of integers. The lists are long so i cant really > show an actual example of on of the lists, but I know that they contain only > the integers 1,2,3,4. so for example. > s2 = [[1,2,2,3,2,1,4,4],[2,4,3,2,3,1]] > > I am calculating the product, sum, max, min.... of each list in s2 but I get > negative or 0 for the product for a lot of the lists. (I am doing this in > ipython) > > for x in s2: > print('len = ', len(x), 'sum = ', sum(x), 'prod = ', prod(x), 'max = ', > max(x), 'min = ', min(x)) > > ... > > ('len = ', 100, 'sum = ', 247, 'prod = ', 0, 'max = ', 4, 'min = ', 1) > ('len = ', 100, 'sum = ', 230, 'prod = ', -4611686018427387904, 'max = ', 4, > 'min = ', 1) > ('len = ', 100, 'sum = ', 261, 'prod = ', 0, 'max = ', 4, 'min = ', 1) > > ..... > > ('prod =', 0, 'max =', 4, 'min =', 1) > ('prod =', 1729382256910270464, 'max =', 4, 'min =', 1) > ('prod =', 0, 'max =', 4, 'min =', 1) > > .... > > > Whats going on?
Let me guess. These are your lists (sorted): [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4] You are using numpy.prod() Numpy.prod overflows: >>> numpy.prod([-9223372036854775808, 2]) ... 0 You want to use something that doesn't such as: def prod(iter): p = 1 for elem in iter: p *= elem return p and then you get your correct products: 8002414661101704746694488837062656 3907429033741066770846918377472 682872717747345471717929714096013312 -- http://mail.python.org/mailman/listinfo/python-list