code: def _copy_one_step_per_data_input(self, data_container):
      # One copy of step per data input:
      steps = [
          self.copy_op(self.wrapped).set_name(
              "{}[{}]".format(self.wrapped.name, i)
          )
          for i in range(len(data_container))
      ]
      self.steps_as_tuple = [(step.name, step) for step in steps]
      self._invalidate()
  
imports: import copy
  from operator import itemgetter
  from typing import Callable, List, Optional, Tuple, Union
  from neuraxle.base import CX, DACT, BaseStep, BaseTransformer, ForceHandleMixin, ForceHandleOnlyMixin, Identity, MetaStep, NamedStepsList, TruncableJoblibStepSaver
  from neuraxle.data_container import DIT, EOT, IDT, DACTData, ListDataContainer
  from neuraxle.steps.flow import ExecuteIf
  import numpy
label_desc: Use image node_id 4 for calling the StepClonerForEachDataInput obj's underlying member method code with example usage: obj._copy_one_step_per_data_input(data_container) without return types