def outer(x, y):
    """Compute the outer product of two one-dimensional lists and return a
    two-dimensional list with the shape (length of `x`, length of `y`).

    Args:
        x (list): First list, treated as a column vector. 1 dimensional.
        y (list): Second list, treated as a row vector. 1 dimensional.

    Returns:
        list: Outer product between x and y.
    """
    return [[x_i * y_i for y_i in y] for x_i in x]