code: def projector_generator(ket, bra):
      
      projectors = []
      for index, (ket_one_qubit, bra_one_qubit) in enumerate(zip(ket[::-1], bra[::-1])):
          projectors.append(_single_projector_generator(ket_one_qubit,
                                                        bra_one_qubit, index))
      return reduce(lambda x, y: x * y, projectors)
docs: Generate a Pauli Sum that corresponds to the projection operator |ket><bra|
  
      note: ket and bra are numerically ordered such that ket = [msd, ..., lsd]
            where msd == most significant digit and lsd = least significant digit.
  
      :param List ket: string of zeros and ones corresponding to a computational
                       basis state.
      :param List bra: string of zeros and ones corresponding to a computational
                       basis state.
      :return: projector as a pauli sum
      :rytpe: PauliSum