def is_private(address):
    """
    Checks if an address is private and if so returns True.  Otherwise returns
    False.
    Args:
        address: Address to check. Can be list or string
    Returns:
        True or False
    """
    if '.' in address:
        pairs = address.split('.')
    elif ':' in address:
        pairs = address.split(':')
    else:
        pairs = []
    private = False
    if pairs:
        if pairs[0] == '10':
            private = True
        elif pairs[0] == '192' and pairs[1] == '168':
            private = True
        elif pairs[0] == '172' and 16 <= int(pairs[1]) <= 31:
            private = True
        elif pairs[0] == 'fe80':
            private = True
        elif pairs[0].startswith('fd'):
            private = True
    return private
