def eulers_method(f, y, dx, range):
    """ The Eulers method for a first order differential equation.
    
    :param f: First order differential equation to approximate the solution for.
    :type f: lambda
    :param y: The initial condition for the y-value.
    :type y: float, int
    :param dx: Step size. Smaller is better.
    :type dx: float
    :param range: List containing the beginning and end points for our domain.
    :type range: list
    :return: Returns a tuple for the x coordinates corresponding to a set of y coordinates,
    which approximate the solution to f. 
    :rtype: list
    """
    x = min(range)
    y_space = [y]
    x_space = [x]
    while x<=max(range):
        y += f(x, y)*dx
        x += dx
        x_space.append(x)
        y_space.append(y)
    return (x_space, y_space)