def even_chunker(seq, n_chunks):
    """Given a sequence, returns that sequence divided into n_chunks of (roughly) the same size.
    In other words, it returns a list of lists.

    When len(seq) is evenly divisible by n_chunks, all chunks are the same size.

    When len(seq) is not evenly divisible by n_chunks, all chunks have a length within +/- 1 of
    all other chunks.

    Some examples of the length of the return chunks for len(seq) == 100:
    n_chunks ==  3: [33, 33, 34]
    n_chunks ==  5: [20, 20, 20, 20, 20]
    n_chunks ==  6: [16, 17, 17, 16, 17, 17]
    n_chunks ==  7: [14, 14, 14, 15, 14, 14, 15]
    n_chunks ==  8: [12, 13, 12, 13, 12, 13, 12, 13]
    n_chunks ==  9: [11, 11, 11, 11, 11, 11, 11, 11, 12]
    n_chunks == 15: [6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7]
    """
    length = len(seq)
    return [seq[i * length // n_chunks: (i + 1) * length // n_chunks]
            for i in range(n_chunks)]