Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-07 Thread Russel Walker
I got it! One of the testcases was wrong,

([[1], [1]],[1],[1, 1]),

should be

([[1], [1]],[1],[1, 1, 1]),


And the working solution.

def supersum(sequence, start=0):
result = start
start = type(start)()
for item in sequence:
try:
item = supersum(item, start)
except TypeError:
pass
try:
result = result + item
except TypeError:
return result + sequence
return result


I couldn't yet get around doing type(start)() and it's pretty messy, but 
anyways...
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-07 Thread Russel Walker
I read through all of the posts and thanks for helping. What was supposed to be 
simple a (recursively) straightforward, turned out to be quite tricky.

I've set up a small testing bench and tried all of the proposed solutions 
including my own but none pass. I'll post it below.

I've also discovered something about lists that explains the very first "weird" 
result I was observing, which I realized was because lists are mutable etc, but 
more specifically:

This

>>> a = [1, 2]
>>> a += [3]

is equivalent to, AFAIK, this

>>> a = [1, 2]
>>> a.extend([3])

So to overcome that you just have to do

>>> a = [1, 2]
>>> a = a + [3]

Which creates a new list. So any variables which were pointing to the same list 
as a, are unaffected.

Summary
- - - -

>>> # --- Bad ---
>>> a = [1, 2]
>>> b = a
>>> a += [3]
>>> print a
[1, 2, 3]
>>> print b
[1, 2, 3]

>>> # --- Good ---
>>> a = [1, 2]
>>> b = a
>>> a = a + [3]
>>> print a
[1, 2, 3]
>>> print b
[1, 2]


And as for the testbench:

def supersum(seq, start=0):
return


#  Testing  >

testcases = [

# (seq, start, result)

# arithmetic sums
([],0,  0),
([[], []],  0,  0),
([[], [[],[]]], 0,  0),
([1],   0,  1),
([[], [1]], 0,  1),
([[], [[],[1, 1]]], 0,  2),
([[1], [1]],0,  2),
([[1], [[1],[1, 1]]],   0,  4),
([[1], [[1],[1, 1]]],   1,  5),

# list flattening
([],[], []),
([[], []],  [], []),
([[], [[],[]]], [], []),
([],[1],[1]),
([[], []],  [1],[1]),
([[], [[],[]]], [1],[1]),
([1],   [1],[1, 1]),
([[1], [1]],[1],[1, 1]),
([[1], [[1],[1]]],  [1],[1, 1, 1, 1]),

]


for seq, start, result in testcases:
try:
assert supersum(seq, start) == result
except Exception as er:
print "seq:%s\t start:%s" % (seq, start)
if type(er) is AssertionError:
print "expected:", result
print "got: ", supersum(seq, start)
else:
print repr(er)
print ''

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-06 Thread Rotwang

On 06/07/2013 21:10, Rotwang wrote:

[...]

It's not quite clear to me what the OP's intentions are in the general
case, but calling supersum(item, start) seems odd - for example, is the
following desirable?

 >>> supersum([[1], [2], [3]], 4)
22

I would have thought that the "correct" answer would be 10. How about
the following?

def supersum(sequence, start = 0):
 result = start
 for item in reversed(sequence):
 try:
 result = supersum(item, result)
 except:
 result = item + result
 return result


Sorry, I've no idea what I was thinking with that reversed thing. The 
following seems better:


def supersum(sequence, start = 0):
result = start
for item in sequence:
try:
result = supersum(item, result)
except:
result = result + item
return result
--
http://mail.python.org/mailman/listinfo/python-list


Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-06 Thread Rotwang

On 06/07/2013 19:43, Joshua Landau wrote:

On 6 July 2013 13:59, Russel Walker  wrote:

Since I've already wasted a thread I might as well...

Does this serve as an acceptable solution?

def supersum(sequence, start=0):
 result = type(start)()
 for item in sequence:
 try:
 result += supersum(item, start)
 except:
 result += item
 return result


It's probably more robust to do:

def supersum(sequence, start=0):
 for item in sequence:
 try:
 result = result + supersum(item, start)
except:
 result = result + item
 return result


I assume you meant to put "result = start" in there at the beginning.



as that way you aren't assuming the signature of type(start).


It's not quite clear to me what the OP's intentions are in the general 
case, but calling supersum(item, start) seems odd - for example, is the 
following desirable?


>>> supersum([[1], [2], [3]], 4)
22

I would have thought that the "correct" answer would be 10. How about 
the following?


def supersum(sequence, start = 0):
result = start
for item in reversed(sequence):
try:
result = supersum(item, result)
except:
result = item + result
return result
--
http://mail.python.org/mailman/listinfo/python-list


Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-06 Thread Terry Reedy

On 7/6/2013 8:37 AM, Russel Walker wrote:

I know this is simple but I've been starring at it for half an hour and trying 
all sorts of things in the interpreter but I just can't see where it's wrong.

def supersum(sequence, start=0):
 result = start
 for item in sequence:
 try:
 result += supersum(item, start)
 except:


Bare except statements cover up too many sins. I and others *strongly* 
recommend that you only catch what you *know* you actually want to (see 
below).



 result += item
 return result


I recommend that you start with at least one test case, and with an edge 
case at that. If you cannot bring yourself to do it before writing a 
draft of the function code, do it immediately after and run. If you do 
not want to use a framework, use assert.


assert supersum([]) == 0
assert supersum([], []) == []

Do the asserts match your intention? The tests amount to a specification 
by example. Any 'kind' of input that is not tested is not guaranteed to 
work.


Back to the except clause: only add try..except xxx when needed to pass 
a test.


--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list


Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-06 Thread Joshua Landau
On 6 July 2013 13:59, Russel Walker  wrote:
> Since I've already wasted a thread I might as well...
>
> Does this serve as an acceptable solution?
>
> def supersum(sequence, start=0):
> result = type(start)()
> for item in sequence:
> try:
> result += supersum(item, start)
> except:
> result += item
> return result

It's probably more robust to do:

def supersum(sequence, start=0):
for item in sequence:
try:
result = result + supersum(item, start)
   except:
result = result + item
return result

as that way you aren't assuming the signature of type(start).
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-06 Thread Chris Angelico
On Sat, Jul 6, 2013 at 10:37 PM, Russel Walker  wrote:
> This works:
> - - - - - -
 x = [[1], [2], [3]]
 supersum(x)
> 6
 supersum(x, [])
> [1, 2, 3]

>
>
> This does not:
> - - - - - - -
 x = [[[1], [2]], [3]]
 supersum(x, [])
> [1, 2, 1, 2, 3]


You have a problem of specification here. What should supersum do with
the list [1]? Should it recurse into it, or append it as a list? It
can't do both. For a list flattener, you would need to either use
.append for each element you come across, or .extend with each list,
with some kind of check to find whether you should recurse or not.

Still, it's a fun thing to play with. I like code golfing these sorts
of trinketty functions, just for fun :)

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-06 Thread Peter Otten
Russel Walker wrote:

> Since I've already wasted a thread I might as well...
> 
> Does this serve as an acceptable solution?
> 
> def supersum(sequence, start=0):
> result = type(start)()
> for item in sequence:
> try:
> result += supersum(item, start)
> except:
> result += item
> return result

That depends on what is an acceptable result ;)
For instance:

>>> supersum([2, 3], 1)
5
>>> supersum([[1], ["abc"]], [])
[1, 'a', 'b', 'c']


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-06 Thread Russel Walker
Since I've already wasted a thread I might as well...

Does this serve as an acceptable solution?

def supersum(sequence, start=0):
result = type(start)()
for item in sequence:
try:
result += supersum(item, start)
except:
result += item
return result
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-06 Thread Russel Walker
Nevermind!

Stupid of me to forget that lists or mutable so result and start both point to 
the same list.
-- 
http://mail.python.org/mailman/listinfo/python-list


Simple recursive sum function | what's the cause of the weird behaviour?

2013-07-06 Thread Russel Walker
I know this is simple but I've been starring at it for half an hour and trying 
all sorts of things in the interpreter but I just can't see where it's wrong.

def supersum(sequence, start=0):
result = start
for item in sequence:
try:
result += supersum(item, start)
except:
result += item
return result

It's supposed to work like the builtin sum, but on multidimensional lists and 
also with the optional start parameter accepting something like an empty list 
and so would also works as a robust list flattener. It's just for kicks, I'm 
not actually going to use it for anything.


This works:
- - - - - -
>>> x = [[1], [2], [3]]
>>> supersum(x)
6
>>> supersum(x, [])
[1, 2, 3]
>>> 


This does not:
- - - - - - - 
>>> x = [[[1], [2]], [3]]
>>> supersum(x, [])
[1, 2, 1, 2, 3]
>>> 

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-06 Thread Ramchandra Apte
On Saturday, 6 October 2012 02:09:56 UTC+5:30, Dave Angel  wrote:
> On 10/05/2012 04:09 PM, Mike wrote:
> 
> > Terry,
> 
> >
> 
> > I am not using the mail client. I am just posting on the site.
> 
> 
> 
> And which site would that be (that you're using)?  There are a few.  I'm
> 
> guessing you use google-groups.  And all of them get gatewayed to the
> 
> actual list, with differing numbers of bugs. 
> 
> 
> 
> I use email to access it directly.  I solve one of the duplicate-message
> 
> problems with google groups by automatically deleting any message
> 
> addressed to google-groups.  There are about 100 such messages each month.
> 
> 
> 
> Another problem is that lots of these gateways post to both the
> 
> newsgroup and to the python-list.
>
I found out earlier that this was why my posts was being double-posted in 
Google Groups.
> 
> 
> >
> 
> > Something wrong with this site. When you do individual reply, it does the 
> > double posting which it shouldn't. See "Ramachandra Apte's" reply. It is 
> > posted twice too.
> 
> >
> 
> > Thanks
> 
> >
> 
> >
> 
> >
> 
> 
> 
> 
> 
> -- 
> 
> 
> 
> DaveA

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Mike
That worked, Ian.

Thanks
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Dave Angel
On 10/05/2012 04:09 PM, Mike wrote:
> Terry,
>
> I am not using the mail client. I am just posting on the site.

And which site would that be (that you're using)?  There are a few.  I'm
guessing you use google-groups.  And all of them get gatewayed to the
actual list, with differing numbers of bugs. 

I use email to access it directly.  I solve one of the duplicate-message
problems with google groups by automatically deleting any message
addressed to google-groups.  There are about 100 such messages each month.

Another problem is that lots of these gateways post to both the
newsgroup and to the python-list.

>
> Something wrong with this site. When you do individual reply, it does the 
> double posting which it shouldn't. See "Ramachandra Apte's" reply. It is 
> posted twice too.
>
> Thanks
>
>
>


-- 

DaveA

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Ian Kelly
On Fri, Oct 5, 2012 at 2:03 PM, Mike  wrote:
> I added the print command.
>
> It prints [] when there is no data.

Change "iter(next_r, None)" to "iter(next_r, [])"
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Mike
Terry,

I am not using the mail client. I am just posting on the site.

Something wrong with this site. When you do individual reply, it does the 
double posting which it shouldn't. See "Ramachandra Apte's" reply. It is posted 
twice too.

Thanks



-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Mike
I added the print command.

It prints [] when there is no data.

Thanks
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Ian Kelly
On Fri, Oct 5, 2012 at 7:39 AM, Mike  wrote:
> Sorry about that. Here you go
>
> Traceback (most recent call last):
>   File "test.py", line 17, in 
> total = sum(float(col.value) for r in iter(next_r, None) for col in 
> r[0].columns.itervalues())
>   File "test.py", line 17, in 
> total = sum(float(col.value) for r in iter(next_r, None) for col in 
> r[0].columns.itervalues())
> IndexError: list index out of range

Maybe the sentinel value is not None as I assumed, and it's
overrunning the end of the data?  What does
client.scannerGet return when there is no more data?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Terry Reedy

On 10/5/2012 9:47 AM, Mike wrote:

On Friday, October 5, 2012 9:41:44 AM UTC-4, Ramchandra Apte wrote:

On Friday, 5 October 2012 19:09:15 UTC+5:30, Mike  wrote:


On Thursday, October 4, 2012 4:52:50 PM UTC-4, Mike wrote:







Hi All,































I am new to python and am getting the data from hbase.


If you want as many people as possible to read your posts, stop using a 
mail-agent and site that spits in the face of readers by doubling blank 
lines each iteration. Alternatives have been discussed previously.


--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Mike
On Friday, October 5, 2012 9:41:44 AM UTC-4, Ramchandra Apte wrote:
> On Friday, 5 October 2012 19:09:15 UTC+5:30, Mike  wrote:
> 
> > On Thursday, October 4, 2012 4:52:50 PM UTC-4, Mike wrote:
> 
> > 
> 
> > > Hi All,
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > I am new to python and am getting the data from hbase. 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > I am trying to do sum on the column as below
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > scanner = client.scannerOpenWithStop("tab", "10", "1000", ["cf:col1"])
> 
> > 
> 
> > > 
> 
> > 
> 
> > > total = 0.0
> 
> > 
> 
> > > 
> 
> > 
> 
> > > r = client.scannerGet(scanner)
> 
> > 
> 
> > > 
> 
> > 
> 
> > > while r:
> 
> > 
> 
> > > 
> 
> > 
> 
> > >   for k in (r[0].columns):
> 
> > 
> 
> > > 
> 
> > 
> 
> > > total += float(r[0].columns[k].value)
> 
> > 
> 
> > > 
> 
> > 
> 
> > >   r = client.scannerGet(scanner)
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > print total
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > Do you know of better (faster) way to do sum?
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > Any thoughts please?
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > 
> 
> > 
> 
> > > Thanks
> 
> > 
> 
> > 
> 
> > 
> 
> > Sorry about that. Here you go
> 
> > 
> 
> > 
> 
> > 
> 
> > Traceback (most recent call last):
> 
> > 
> 
> >   File "test.py", line 17, in 
> 
> > 
> 
> > total = sum(float(col.value) for r in iter(next_r, None) for col in 
> > r[0].columns.itervalues())
> 
> > 
> 
> >   File "test.py", line 17, in 
> 
> > 
> 
> > total = sum(float(col.value) for r in iter(next_r, None) for col in 
> > r[0].columns.itervalues())
> 
> > 
> 
> > IndexError: list index out of range
> 
> 
> 
> the variable "r" is an empty list

Here is the actual code.

scanner = client.scannerOpenWithStop("tab", "10", "1000", ["cf:col1"]) 
next_r = functools.partial(client.scannerGet, scanner)
total = sum(float(col.value) for r in iter(next_r, None) for col in 
r[0].columns.itervalues())


Scanner does have rows.

Are we missing something please?

Thanks
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Ramchandra Apte
On Friday, 5 October 2012 19:09:15 UTC+5:30, Mike  wrote:
> On Thursday, October 4, 2012 4:52:50 PM UTC-4, Mike wrote:
> 
> > Hi All,
> 
> > 
> 
> > 
> 
> > 
> 
> > I am new to python and am getting the data from hbase. 
> 
> > 
> 
> > I am trying to do sum on the column as below
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > scanner = client.scannerOpenWithStop("tab", "10", "1000", ["cf:col1"])
> 
> > 
> 
> > total = 0.0
> 
> > 
> 
> > r = client.scannerGet(scanner)
> 
> > 
> 
> > while r:
> 
> > 
> 
> >   for k in (r[0].columns):
> 
> > 
> 
> > total += float(r[0].columns[k].value)
> 
> > 
> 
> >   r = client.scannerGet(scanner)
> 
> > 
> 
> > 
> 
> > 
> 
> > print total
> 
> > 
> 
> > 
> 
> > 
> 
> > Do you know of better (faster) way to do sum?
> 
> > 
> 
> > 
> 
> > 
> 
> > Any thoughts please?
> 
> > 
> 
> > 
> 
> > 
> 
> > Thanks
> 
> 
> 
> Sorry about that. Here you go
> 
> 
> 
> Traceback (most recent call last):
> 
>   File "test.py", line 17, in 
> 
> total = sum(float(col.value) for r in iter(next_r, None) for col in 
> r[0].columns.itervalues())
> 
>   File "test.py", line 17, in 
> 
> total = sum(float(col.value) for r in iter(next_r, None) for col in 
> r[0].columns.itervalues())
> 
> IndexError: list index out of range

the variable "r" is an empty list
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Mike
On Thursday, October 4, 2012 4:52:50 PM UTC-4, Mike wrote:
> Hi All,
> 
> 
> 
> I am new to python and am getting the data from hbase. 
> 
> I am trying to do sum on the column as below
> 
> 
> 
> 
> 
> scanner = client.scannerOpenWithStop("tab", "10", "1000", ["cf:col1"])
> 
> total = 0.0
> 
> r = client.scannerGet(scanner)
> 
> while r:
> 
>   for k in (r[0].columns):
> 
> total += float(r[0].columns[k].value)
> 
>   r = client.scannerGet(scanner)
> 
> 
> 
> print total
> 
> 
> 
> Do you know of better (faster) way to do sum?
> 
> 
> 
> Any thoughts please?
> 
> 
> 
> Thanks

Sorry about that. Here you go

Traceback (most recent call last):
  File "test.py", line 17, in 
total = sum(float(col.value) for r in iter(next_r, None) for col in 
r[0].columns.itervalues())
  File "test.py", line 17, in 
total = sum(float(col.value) for r in iter(next_r, None) for col in 
r[0].columns.itervalues())
IndexError: list index out of range
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-05 Thread Ramchandra Apte
On Friday, 5 October 2012 07:31:24 UTC+5:30, Mike  wrote:
> I agree with you, Ian. Thanks for all the help.  Now I get the below error.
> 
> 
> 
>   File "test.py", line 17, in 
> 
> total = sum(float(col.value) for r in iter(next_r, None) for col in 
> r[0].columns.itervalues())
> 
>   File "test.py", line 17, in 
> 
> total = sum(float(col.value) for r in iter(next_r, None) for col in 
> r[0].columns.itervalues())
> 
> 
> 
> Thanks

You have missed the last line of the traceback (error)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-04 Thread Mike

I agree with you, Ian. Thanks for all the help.  Now I get the below error.

  File "test.py", line 17, in 
total = sum(float(col.value) for r in iter(next_r, None) for col in 
r[0].columns.itervalues())
  File "test.py", line 17, in 
total = sum(float(col.value) for r in iter(next_r, None) for col in 
r[0].columns.itervalues())

Thanks
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-04 Thread Ian Kelly
On Thu, Oct 4, 2012 at 6:40 PM, Mike  wrote:
> Traceback (most recent call last):
>   File "test.py", line 16, in 
> total = sum(float(col.value) for r in iter(next_r, None) for col in 
> r.itervalues())
>   File "test.py", line 16, in 
> total = sum(float(col.value) for r in iter(next_r, None) for col in 
> r.itervalues())
> AttributeError: 'list' object has no attribute 'itervalues'

"r.itervalues()" should have been "r[0].columns.itervalues()", I
think.  It's hard to test code against an API that you don't have. :-)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-04 Thread Mike
On Thursday, October 4, 2012 5:40:26 PM UTC-4, Dave Angel wrote:
> On 10/04/2012 05:29 PM, Mike wrote:
> 
> > I get below error
> 
> >
> 
> > NameError: name 'functools' is not defined
> 
> >
> 
> 
> 
> functools is a module in the standard library. You need to import it.
> 
> 
> 
> import functools
> 
> 
> 
> 
> 
> 
> 
> -- 
> 
> 
> 
> DaveA

I imported functools. Now I get the below error please.


Traceback (most recent call last):
  File "test.py", line 16, in 
total = sum(float(col.value) for r in iter(next_r, None) for col in 
r.itervalues()) 
  File "test.py", line 16, in 
total = sum(float(col.value) for r in iter(next_r, None) for col in 
r.itervalues()) 
AttributeError: 'list' object has no attribute 'itervalues'

Thanks
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-04 Thread Chris Angelico
On Fri, Oct 5, 2012 at 7:29 AM, Mike  wrote:
> I get below error
>
> NameError: name 'functools' is not defined
>
> Thanks

functools is a module:

import functools

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-04 Thread Dave Angel
On 10/04/2012 05:29 PM, Mike wrote:
> I get below error
>
> NameError: name 'functools' is not defined
>

functools is a module in the standard library. You need to import it.

import functools



-- 

DaveA

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-04 Thread Mike
Thanks Ian for the quick reply.

I get the below error.

NameError: name 'itertools' is not defined

Thanks
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-04 Thread Mike
I get below error

NameError: name 'functools' is not defined

Thanks

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-04 Thread Ian Kelly
On Thu, Oct 4, 2012 at 3:04 PM, Ian Kelly  wrote:
> scanner = client.scannerOpenWithStop("tab", "10", "1000", ["cf:col1"])
> next_r = itertools.partial(client.scannerGet, scanner)
> total = sum(float(col.value) for r in iter(next_r, None) for col in
> r.itervalues())

That should be "functools" above, not "itertools". :-P
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sum function

2012-10-04 Thread Ian Kelly
On Thu, Oct 4, 2012 at 2:52 PM,   wrote:
> scanner = client.scannerOpenWithStop("tab", "10", "1000", ["cf:col1"])
> total = 0.0
> r = client.scannerGet(scanner)
> while r:
>   for k in (r[0].columns):
> total += float(r[0].columns[k].value)
>   r = client.scannerGet(scanner)
>
> print total
>
> Do you know of better (faster) way to do sum?

scanner = client.scannerOpenWithStop("tab", "10", "1000", ["cf:col1"])
next_r = itertools.partial(client.scannerGet, scanner)
total = sum(float(col.value) for r in iter(next_r, None) for col in
r.itervalues())
-- 
http://mail.python.org/mailman/listinfo/python-list


sum function

2012-10-04 Thread mike20007
Hi All,

I am new to python and am getting the data from hbase. 
I am trying to do sum on the column as below


scanner = client.scannerOpenWithStop("tab", "10", "1000", ["cf:col1"])
total = 0.0
r = client.scannerGet(scanner)
while r:
  for k in (r[0].columns):
total += float(r[0].columns[k].value)
  r = client.scannerGet(scanner)

print total

Do you know of better (faster) way to do sum?

Any thoughts please?

Thanks
-- 
http://mail.python.org/mailman/listinfo/python-list