def construct_num_check(token_list):
    """Construct num_check list to classify each item in token_list.

    At matching indices of token_list, elements of num_check are given
    either True(numeric value), False(string) or one of shorthand_keys.

    shorthand_keys:
    - R: Repetition. Ex) '2 4R' = '2 2 2 2 2'
    - I: Linear interpolation. Ex) '1 4I 6' = '1 2 3 4 5 6'
    - ILOG: Logarithmic interpolation. Ex) '0.01 2ILOG 10' = '0.01 0.1 1 10'
    - M: Multiplication. Ex) '1 1 2M 2M 2M 2M 4M 2M' = '1 1 2 4 8 16 64 128'

    Example:
      token_list = ['63-', '     ', 'mat', '5500', '4i', '5505', 'omit', '-1']
      -> num_check = [False, False, False, True, 'i', True, False, True]

    Arguments:
        token_list (list)[-]: A list of tokens for which numeric values
            are checked.
    Returns:
        num_check (list)[-]: A list of classifications for items of token_list.

    """
    # Shorthands for MCNP input entry.
    shorthand_keys = ['ilog', 'r', 'i', 'm']

    num_check = []

    for item in token_list:
        try:
            # Check if an item is a number.
            float(item)
            num_check.append(True)
        except:
            # Check if an item includes one of shorthands(mutually exclusive).
            key_check = False
            for key in shorthand_keys:
                try:
                    float(item[:-len(key)])
                    # Check if an item is a shorthand.
                    if item[-len(key):] == key:
                        key_check = key
                except:
                    if item == key:
                        key_check = key
                    else:
                        continue
            # Map key_check to an element of num_check.
            num_check.append(key_check)
    return num_check