Python Forum
Need help understanding return statement - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Need help understanding return statement (/thread-2260.html)



Need help understanding return statement - python_lover - Mar-02-2017

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


RE: Need help understanding return statement - micseydel - Mar-02-2017

It's a comprehension. A list comprehension in particular.


RE: Need help understanding return statement - Larz60+ - Mar-02-2017

In order to properly answer, need to see more code, specifically what the call to the function looks like,
v & w


RE: Need help understanding return statement - zivoni - Mar-02-2017

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]



RE: Need help understanding return statement - python_lover - Mar-03-2017

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