'How to pass to a function that takes two arguments an element from one list together with each element of another list?

I am new to Python and I need help with following. I do have a list a = [range(1, 50, 10)] and another list b = [2, 4, 5, 8, 12, 34] Now, I have a function that calculates something, let's call it "SomeFunction", that takes two arguments. I want to pass to this SomeFunction for element from list a each element of list b. So, I want values for: SomeFunction(1, 2), SomeFunction(1, 4), SomeFunction(1, 5), ..... SomeFunction(50, 2), SomeFunction(50, 4), SomeFunction(50, 5), etc.

I think it should be done somehow with for loops, but I do not know how...



Solution 1:[1]

You'd need a nested for loop:

a = range(1, 50, 10)
b = [2, 4, 5, 8, 12, 34] 

for aval in a:
    for bval in b:
        print(aval, bval)  # or any other function call

This just goes through all values in b for each value in a. (Note that you don't want range inside square brackets as you have in your question, I removed those).

A more advanced version: "all pairs of values" is also known as the Cartesian product, which is provided by the itertools module. Thus you could write

from itertools import product

for aval, bval in product(a, b):
    print(aval, bval)

Solution 2:[2]

Try this:

a = range(1, 50, 10)
b = [2, 4, 5, 8, 12, 34]
for i in a:
    for n in b:
        print(SomeFunction(i, n))

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Christopher