是否有一个命令,让我得到的交集(成员在这两个列表apear)两个名单的?
例如,如果列表是:
abcdh
和cefgh
结果应该是ch
是否有一个命令,让我得到的交集(成员在这两个列表apear)两个名单的?
例如,如果列表是:
abcdh
和cefgh
结果应该是ch
假如你真正拥有的是一组(具有独特元素的列表),你可以使用tcllib:
::结构::集相交? 设置1 ...?
package require Tcl 8.0
package require struct::set
set list1 {a b c d h}
set list2 {c e f g h}
::struct::set intersect $list1 $list2
> c h
没有一个命令,但通常我这样做是建设一个或多个表的过程中缓存的元素 ,以节省时间的方式。 例如,给定以下内容:
foreach x {a b c d h} {
lappend list_x $x
}
foreach y {c e f g h} {
lappend list_y $y
}
我想补充:
foreach x {a b c d h} {
lappend list_x $x
set cache($x) 1
}
foreach y {c e f g h} {
lappend list_y $y
if {[info exists cache($y)]} {
lappend list_xy $y
}
}
puts $list_xy
输出:
c h
package require Tcl 8.5
set a {1 2 3 4 5}
set b {3 4 5 6 7}
set intersect [list]
foreach elem $a {
if {$elem in $b} {
lappend intersect $elem
}
}