input: Write a python function to chunk a list into smaller lists of a specified size.
  assert list(_chunks([1, 2, 3, 4, 5, 6], 2)) == [[1, 2], [3, 4], [5, 6]]
  assert list(_chunks([1, 2, 3, 4, 5, 6, 7], 3)) == [[1, 2, 3], [4, 5, 6], [7]]
  assert list(_chunks([1, 2, 3], 1)) == [[1], [2], [3]]
  assert list(_chunks([], 3)) == []
output: def _chunks(lst, chunk_size):
      for i in range(0, len(lst), chunk_size):
          yield lst[i:i + chunk_size]