Stagg Stagg - 1 year ago 67
Python Question

Apply formula with two different lists

I have two lists like this:

listA = [51, 988, 1336, 2067, 1857, 3160]
listB = [1, 2, 3, 4, 5, 6]

I have to apply this formula in the lists:

n / pi * ((x*0.1)+1)**2 - pi * (x*0.1)**2

The 'n' is the elements of listA, 'x' is the elements that correspond to the same index of 'n' in listB.

I need to apply this formula to all the elements in both list. So that when the loop runs the first time it needs to do this:

51/pi*((1*0.1)+1)**2 - pi *(1*0.1)**2

For the second this, it needs to do this:

988/pi*((2*0.1)+1)**2 - pi*(2*0.1)**2

And it repeats until the end of both lists.

I know I have to use a 'for' loop, but my problem is that I don't know how to get the elements from the second list. I'm trying to do this:

for n in listA:

Inside thhe brackets it should be the elements from listB but I don't know how to get them, and they need to have the same index as the element from listA.
The output should be a third list with the result of each formula applied.

I have tried to explained myself the best way possible, but if you don't understand my question feel free to ask any question.

Thanks in advance.

Answer Source

I assume both lists have the same size all the time, most pythonic way is to use lambda and list comprehensions:

listA = [51, 988, 1336, 2067, 1857, 3160]
listB = [1, 2, 3, 4, 5, 6]

from math import pi

formula = lambda n,x: n / pi * ((x*0.1)+1)**2 - pi * (x*0.1)**2

res = [ formula(a,b) for a,b in zip(listA,listB) ]

>> [19.621466242038217,
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download