Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Différence entre deux listes
#1
Voici deux moyens d'avoir la différence entre deux liste, ou plus exactement la liste des éléments de la première liste qui n'appartiennent pas à la seconde.

Cette méthode n'est pas optimale du tout, mais fonctionne sur quasi toutes les versions de tcl :

tcl
proc ldiff {list1 list2} {
   foreach suppr $list2 {
      set ind [lsearch $list1 $suppr]
      set list1 [lreplace $list1 $ind $ind]
   }
   return $list1
}


Cette version est l'approche optimale, moins explicite pour le néophyte mais elle soulage l'eggdrop :

tcl
proc ldiff {list1 list2} {
   foreach element $list1 {
      if { !($element in $list2) } {
         lappend diff $element
      }
   }
   return $diff
}

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
  Reply
#2
Et une nouvelle version utilisant lmap (tcl8.6 obligatoire):

tcl
proc ldiff {list1 list2 {option -exact}} {
   if {$option ne "-nocase"} { set option -exact }
   return [lmap x $list1 {expr {[lsearch $option $list2 $x] < 0 ? $x : [continue]}}]
}

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
  Reply
#3
Très intéressant aussi. Merci pour le partage :)
  Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Intersection de listes CrazyCat 2 2,759 21/10/2020, 20:24
Last Post: BdS
  Convertir des nombres entre différentes bases numériques MenzAgitat 0 4,415 23/07/2014, 17:57
Last Post: MenzAgitat
  Combinaison de listes CrazyCat 0 3,820 29/11/2013, 17:26
Last Post: CrazyCat

Forum Jump:


Users browsing this thread: 1 Guest(s)