code: def _init_from_list(self, subwords):
      
      subwords = [tf.compat.as_text(s) for s in subwords if s]
      self._subwords = subwords
      # Note that internally everything is 0-indexed. Padding is dealt with at the
      # end of encode and the beginning of decode.
      self._subword_to_id = {s: i for i, s in enumerate(subwords)}
  
      # We remember the maximum length of any subword to avoid having to
      # check arbitrarily long strings.
      self._max_subword_len = max(
          len(_UNDERSCORE_REPLACEMENT), max([len(s) for s in subwords] or [1]))
  
      # Initialize the cache
      self._cache_size = 2**20
      self._token_to_ids_cache = [(None, None)] * self._cache_size
  
      # Setup tokenizer
      # Reserved tokens are all tokens that are mixed alphanum and non-alphanum.
      reserved_tokens = set([_UNDERSCORE_REPLACEMENT])
      for t in self._subwords:
        if text_encoder.is_mixed_alphanum(t):
          reserved_tokens.add(t)
      self._tokenizer = text_encoder.Tokenizer(
          alphanum_only=False, reserved_tokens=reserved_tokens)
docs: Initializes the encoder from a list of subwords.