views:

114

answers:

2

Hello,

I want a one-liner solution In Python of the following code but how?

total = 0
for ob in self.oblist:
    total+=sum(v.amount for v in ob.anoutherob)

It returns total value. I want it one liner , plz any one help me

+3  A: 

You can just collapse the for loop into another level of comprehension:

total = sum(sum(v.amount for v in ob.anotherob) for ob in self.oblist)
Amber
+6  A: 

No need to double up on the sum() calls

total = sum(v.amount for ob in self.oblist for v in ob.anotherob)
gnibbler
This is the superior answer.
Jesse Dhillon
+1, it's just a sum after all
e-satis