input: Write a python function to generate a list of dictionaries with all combinations of colors and shapes.
  assert generate_combinations(['red', 'green'], ['circle', 'square']) == [{'color': 'red', 'shape': 'circle'}, {'color': 'red', 'shape': 'square'}, {'color': 'green', 'shape': 'circle'}, {'color': 'green', 'shape': 'square'}]
  assert generate_combinations(['blue'], ['triangle']) == [{'color': 'blue', 'shape': 'triangle'}]
  assert generate_combinations([], ['hexagon']) == []
  assert generate_combinations(['purple'], []) == []
output: def generate_combinations(colors, shapes):
      return [{'color': color, 'shape': shape} for color in colors for shape in shapes]