Python Forum

Full Version: Need help understanding return statement
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi Guys,

Am new to Python, came across a strange looking piece of code as below....

I checked and it works but I am not understanding the return statement. Can you please help.....


def v_add(v, w):
   return [v_i + w_i for v_i, w_i in zip(v, w)]
can any one please elaborate the return statement here in depth?

Thanks,
PL
It's a comprehension. A list comprehension in particular.
In order to properly answer, need to see more code, specifically what the call to the function looks like,
v & w
Is it a function to add two vectors? List comprehension could be rewritten as a for loop:

def v_add(v, w):
    result = []
    for v_i, w_i in zip(v, w):
        result.append(v_i + w_i)

        # print only to show what is going on
        print("v_i = {}, w_i = {}, result = {}".format(v_i, w_i, result))
    return result
zip() is a built-in function that "zips" its argument(s), it yields tuples of i-th elemens of its arguments - for example when iterating over zip([1,2,3], [4,2,2]), it gives (1,4), (2, 2), (3, 2).  Those tuples are unpacked into v_i and w_i variables. 

Example run:
Output:
>>> v = [1, 2, 3] >>> w = [4, 2, 2] >>> v_add(v, w) v_i = 1, w_i = 4, result = [5] v_i = 2, w_i = 2, result = [5, 4] v_i = 3, w_i = 2, result = [5, 4, 5] [5, 4, 5]
Yes Zivoni, this is addition of two Vectors.

Thanks a lot every one for your help. 

Am quite an experienced programmer but some how Python is proving tricky for me. There are too many ways of achieving an outcome in it. 
Am looking for a book which will teach Python is a very simple way..checked books such a a byte of python, python the hard way, core python etc.. but still not able to get the grip.

Thanks,
PL