def setintersect_ordered(list1, list2):
    """
    returns list1 elements that are in list2. preserves order of list1

    setintersect_ordered

    Args:
        list1 (list):
        list2 (list):

    Returns:
        list: new_list

    Example:
        >>> # ENABLE_DOCTEST
        >>> from utool.util_list import *  # NOQA
        >>> list1 = [1, 2, 3, 5, 8, 13, 21]
        >>> list2 = [6, 4, 2, 21, 8]
        >>> new_list = setintersect_ordered(list1, list2)
        >>> result = new_list
        >>> print(result)
        [2, 8, 21]
    """
    return [item for item in list1 if item in set(list2)]