On Sep 4, 2:05 am, Thomas Bellman <[EMAIL PROTECTED]> wrote: > Mensanator <[EMAIL PROTECTED]> wrote: > > No, but blank cells are 0 as far as Excel is concerned. > > That behaviour causes nothing but trouble and I am > > saddened to see Python emulate such nonsense. > > Then you should feel glad that the Python sum() function *does* > signal an error for the closest equivalent of "blank cells" in > a list: > > >>> sum([1, 2, 3, None, 5, 6]) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
Yes, I am in fact happy to see that behaviour. > > Summing the elements of an empty list is *not* the same thing as > summing elements of a list where one element is None. So, >>> sum([1, 2, 3, None, 5, 6]) Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> sum([1, 2, 3, None, 5, 6]) TypeError: unsupported operand type(s) for +: 'int' and 'NoneType' gives me an error. As does >>> sum([None, None, None, None, None, None]) Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> sum([None, None, None, None, None, None]) TypeError: unsupported operand type(s) for +: 'int' and 'NoneType' Why then, doesn't >>> sum([A for A in [None, None, None, None, None, None] if A != None]) 0 give me an error? Ok, it's not a bug. "This behaviour is by design." - Microsoft Knowledge Base I don't like it, but I guess I'll just have to live with it. > > > There are no "empty" boxes. There are only boxes with > > known quantities and those with unknown quantities. > > I hope that's not too ivory tower. > > The sum() function in Python requires exactly one box. That box > can be empty, can contain "known quantities" (numbers, presumably), > or "unknown quantities" (non-numbers, e.g., None). But you can't > give it zero boxes, or three boxes. > > I don't have a strong view of whether sum([]) should return 0 or > raise an error, but please do not mix that question up with what > a sum over empty cells or over NULL values should yield. They > are very different questions. Ok, but I don't understand why an empty list is a valid sum whereas a list containing None is not. > > As it happens, the SQL sum() function (at least in MySQL; I don't > have any other database easily available, nor any SQL standard to > read) does return NULL for a sum over the empty sequence, so you > could argue that that would be the correct behaviour for the > Python sum() function as well, but you can't argue that because a > sum *involving* a NULL value returns NULL. I'm not following that. Are you saying a query that returns no records doesn't have a specific field containg a Null so there are no Nulls to poison the sum? ...tap...tap...tap. Ok, I can see that, but you don't get 0 either. > > -- > Thomas Bellman, Lysator Computer Club, Linköping University, Sweden > "This isn't right. This isn't even wrong." ! bellman @ lysator.liu.se > -- Wolfgang Pauli ! Make Love -- Nicht Wahr! -- http://mail.python.org/mailman/listinfo/python-list