Function of adding two lists in Python

Question:

whenever I run following code of adding two lists in python below mentioned error appears

    def add_lists(L1, L2):
        R = []
        for i in range(0, len(L1)):
            R.append(L1[i]+L2[i])
        return R

    L2 = [3, 3, 3, 3]
    L1 = [1, 2, 3, 4]
    add_lists(L1, L2)
    print("Resultant list of: ", str(L1), '& ' + str(L2), 'is', R)

this code yields NameError: name ‘R’ is not defined

Asked By: Faizan Arshad

||

Answers:

You defined R in a local scope "it looks like inside a function" while you are trying to use it outside of that scope in the last line.

Try moving the initialization of "R = []" to the outer scope.

Answered By: Shawky Ahmed

its because R = [] is inside the function and print is outside the function…
so try this :

R = []
def add_lists(L1, L2):
        
        for i in range(0, len(L1)):
            R.append(L1[i]+L2[i])
        return R

L2 = [3, 3, 3, 3]
L1 = [1, 2, 3, 4]
add_lists(L1, L2)
print("Resultant list of: ", str(L1), '& ' + str(L2), 'is', R)
Answered By: ImThePeak

The variable R is local to your function and so is not accessible to your print statement. (Generally, this is good! It makes the function self-contained and avoids dependencies on what global variables may or may not exist.)

To print the result of the function, assign the result to an in-scope variable and use that.

def add_lists(L1, L2):
    R = []
    for i in range(0, len(L1)):
        R.append(L1[i]+L2[i])
    return R

L2 = [3, 3, 3, 3]
L1 = [1, 2, 3, 4]
res = add_lists(L1, L2)  # assigns the result of the function call to a variable we can access
print("Resultant list of: ", str(L1), '& ' + str(L2), 'is', res)
Answered By: slothrop