Python Forum
list from defined function - 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: list from defined function (/thread-23548.html)



list from defined function - Coastal - Jan-05-2020

Hey I'm trying to learn how to define a function.
As an example I made a "only want even number from a range" function

def even_numbers_only(a, b):
even_numbers_list = []
for i in range(a, b):
if (i % 2) == 0:
even_numbers_list.append(i)
return even_numbers_list

even = [even_numbers_only(1000, 3001)]
print(even)


But I don't understand how i can output a list from a defined function


RE: list from defined function - j.crater - Jan-05-2020

Please put your code in Python code tags, as you have been warned about that before. You can find help here.


RE: list from defined function - Killertjuh - Jan-06-2020

(Jan-05-2020, 10:02 AM)Coastal Wrote: Hey I'm trying to learn how to define a function.
As an example I made a "only want even number from a range" function

def even_numbers_only(a, b):
    even_numbers_list = []
    for i in range(a, b):
        if (i % 2) == 0:
            even_numbers_list.append(i)
        return even_numbers_list

even = [even_numbers_only(1000, 3001)]
print(even)
But I don't understand how i can output a list from a defined function

even = [even_numbers_only(1000, 3001)]
you have to remove the [ ]


even = even_numbers_only(1000, 3001)
You can directly print the output without added to a var
print(even_numbers_only(1000, 3001))



RE: list from defined function - perfringo - Jan-06-2020

Some suggestions:

- use meaningful parameter names
- take andvantage that True and False are integer subclass with respective values of 1, 0.

Some ideas:

def get_evens(start, stop):
    evens = []
    for i in range(start, stop+1):      # we need +1 if we want to include stop
        if not i % 2:
            evens.append(i)
    return evens
However, if one already writes functions then list comprehension should be covered topic. So this function can be written:

def get_evens(start, stop):
    return [i for i in range(start, stop+1) if not i % 2]
But if function works on continuous range of numbers one can just verify first number and then use range with step:

def get_evens(start, stop): 
    if start % 2: 
        return list(range(start+1, stop+1, 2)) 
    else: 
        return list(range(start, stop+1, 2)
One can observe that only difference between returns above is value of dividing by 2 and therefore we can write this function like:

def evens(start, stop): 
    return list(range(start+start % 2, stop+1, 2))
If function result is used to iterate over then there is no need to convert into list and range can be returned.