Reputation: 760
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
Reputation: 97631
Use sum
:
b = [sum(row) for row in a]
b = [sum(c[i] for i in row) for row in a]
Upvotes: 3
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
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