python - Reduce list based on index -
say have 3 lists
x1 = [1, 2, 3, 4] x2 = [2, 3, 4, 5] x3 = [3, 4, 5, 6] i reduce list of lists based on index.
we reduce summing elements: - x1[i] + x2[i] + x3[i]
out = [6, 9, 12, 15] or multiplying: - x1[i] * x2[i] * x3[i]
out = [6, 24, 60, 120] what best way in python accomplish this?
edit:
is there way of doing list of lists?
you can use zip , sum functions.
out = [sum(i) in zip(x1, x2, x3)] for multiplication use reduce (for python 2)
out = [reduce(lambda a, b: * b, i) in zip(x1, x2, x3)] you can reduce functools in python 3.
however, define own multiplication function, use function in list comprehension.
def mult(lst): mul = 1 in lst: mul *= return mul out = [mult(i) in zip(x1, x2, x3)] if have list of lists lst = [[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]] need replace zip(x1, x2, x3) zip(*lst). * operator unpacks elements of list , feeds them separate arguments function.
for example:
out = [sum(i) in zip(*lst)]
Comments
Post a Comment