30/01/2024, 17:45
Voici un petit bout de code qui est parfois utile: trouver tous les éléments d'une liste qui sont présents dans une autre liste:
Différence de liste:
Les mêmes en utilisant lmap
tcl
# Recherche les éléments de list1 contenus dans list2
proc lintersect {list1 list2} {
foreach element $list1 {
if { ($element in $list2) } { lappend intersect $element }
}
return $intersect
}
Différence de liste:
tcl
# version de #MenzAgitat
proc ldiff {list1 list2} {
foreach element $list1 {
if { !($element in $list2) } {
lappend diff $element
}
}
return $diff
}
Les mêmes en utilisant lmap
tcl
proc lintersect {list1 list2 {option -exact}} {
if {$option ne "-nocase"} { set option -exact }
return [lmap x $list1 {expr {[lsearch $option $list2 $x] >= 0 ? $x : [continue]}}]
}
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]}}]
}