import array


def make_table(width):
    """Create static sized CRC lookup table and initialize it with ``0``.

    For 8, 16, 32, and 64 bit width :class:`array.array` instances are used.
    For all other widths it falls back to a generic Python :class:`list`.

    Args:
        width (int): Size of elements in bits
    """
    initializer = (0 for _ in range(256))

    if width == 8:
        return array.array('B', initializer)
    elif width == 16:
        return array.array('H', initializer)
    elif width == 32:
        return array.array('L', initializer)
    elif width == 64:
        return array.array('Q', initializer)
    else:
        # Fallback to a generic list
        return list(initializer)