code: def compare_containers(self, container1, container2):
      def is_container(container):
          return isinstance(container, list) or isinstance(
              container, tuple
          )
  
      if len(container1) == 0 and len(container2) == 0:
          return True
  
      if len(container1) != len(container2):
          return False
  
      for index in range(len(container1)):
          if is_container(container1[index]) and is_container(
              container2[index]
          ):
              return self.compare_containers(
                  container1[index], container2[index]
              )
  
          elif is_container(container1[index]) == is_container(
              container2[index]
          ):
              if container1[index] != container2[index]:
                  return False
  
          else:
              return False
  
          return True
  
imports: import unittest
  import numpy
  from pyclustering.core.pyclustering_package import package_builder, package_extractor
  from ctypes import c_ulong, c_size_t, c_double, c_uint, c_float, c_char_p
label_desc: Use image node_id 2 for calling the Test obj's underlying member method code with example usage: obj.compare_containers(container1, container2) and returns: unknown, True, False, True, self, False, False