input: Write a python function to clean and tokenize text data.
  assert clean_and_tokenize(['Hello, World!']) == [['hello', 'world']]
  assert clean_and_tokenize(['I love Python.']) == [['i', 'love', 'python']]
  assert clean_and_tokenize(['Machine learning is great!']) == [['machine', 'learning', 'is', 'great']]
output: def clean_and_tokenize(text_list):
      import re
      from nltk.tokenize import word_tokenize
  
      cleaned_and_tokenized = []
  
      for text in text_list:
          # Convert to lowercase
          text = text.lower()
          # Remove punctuation and non-alphabetic characters
          text = re.sub(r'[^a-z\s]', '', text)
          # Tokenize the text
          tokens = word_tokenize(text)
          cleaned_and_tokenized.append(tokens)
      
      return cleaned_and_tokenized