def is_list_like(obj):
    """Determine if an object is an iterable collection, but not a string.

    Parameters
    ----------
    obj : object
        Object to inspect.

    Returns
    -------
    true if object is a collection, but not a string.

    Examples
    --------
    >>> is_list_like(None)
    False
    >>> is_list_like(0)
    False
    >>> is_list_like("aaa")
    False
    >>> is_list_like(r"aaa")
    False
    >>> is_list_like(u"aaa")
    False
    >>> is_list_like(b"aaa")
    False
    >>> is_list_like([1,2,3])
    True
    >>> is_list_like((1,2,3))
    True
    """
    if obj is None:
        return False
    if isinstance(obj, str):
        return False
    if isinstance(obj, bytes):
        return False
    if hasattr(obj, '__iter__'):
        return True
    return False
