code: def _split_evol_tape(tape, split_evolve_ops, op_idx):
      """Replace a marked ``ParametrizedEvolution`` in a given tape by provided operations, creating
      one tape per group of operations.
  
      Args:
          tape (QuantumTape): original tape
          split_evolve_ops (tuple[list[qml.Operation]]): The time-split evolution operations as
              created by ``_split_evol_ops``. For each group of operations, a new tape
              is created.
          op_idx (int): index of the operation to replace within the tape
  
      Returns:
          list[QuantumTape]: new tapes with replaced operation, one tape per group of operations in
          ``split_evolve_ops``.
      """
      ops_pre = tape.operations[:op_idx]
      ops_post = tape.operations[op_idx + 1 :]
      return [
          qml.tape.QuantumScript(
              ops_pre + split + ops_post,
              tape.measurements,
              shots=tape.shots,
          )
          for split in split_evolve_ops
      ]
  
file_path: pennylane/pennylane/gradients/pulse_gradient.py
imports: from typing import Sequence, Callable
  from functools import partial
  import warnings
  import numpy
  import pennylane
  from pennylane.pulse import ParametrizedEvolution, HardwareHamiltonian
  from pennylane import transform
  from .parameter_shift import _make_zero_rep
  from .general_shift_rules import eigvals_to_frequencies, generate_shift_rule
  from .gradient_transform import _all_zero_grad, assert_no_state_returns, assert_no_tape_batching, assert_no_variance, choose_trainable_params, find_and_validate_gradient_methods, _no_trainable_grad, reorder_grads
label_desc: Use image node_id 4 for calling a global function with example usage: _split_evol_tape(tape, split_evolve_ops, op_idx) and returns: unknown