Luke
Luke

Reputation: 760

Nested For Loops with += Operating Using List Comprehension

My code:

a = [[random.randint(0,10) for i in range(3)] for j in range(4)]
b = [0]*4
c = [random.random() for i in range(12)]
for i in range(len(a)):
    for j in a[i]:
        b[i] += c[j]

Any idea how to implementing this as a list comprehension?

Upvotes: 0

Views: 78

Answers (3)

Eric
Eric

Reputation: 97631

Use sum:

b = [sum(row) for row in a]

edit

b = [sum(c[i] for i in row) for row in a]

Upvotes: 3

Alex Lisovoy
Alex Lisovoy

Reputation: 6065

Try this snippet:

import operator

b = [sum(map(operator.getitem,[c]*3, a_)) for a_ in a]

Or with operator.itemgetter:

b = [sum(operator.itemgetter(*_a)(c)) for _a in a]

Upvotes: 1

lizhihui-kevin
lizhihui-kevin

Reputation: 1

Sorry, is this following what you want?

import random

a = [[random.randint(0,10) for i in range(4)] for j in range(4)]
b = [0 for i in range(4)]

for i in a:
    for j in i:
        b[a.index(i)] += j

print b

Upvotes: 0

Related Questions