我想在给定列表中创建一个缺少数字的数字列表,如下例所示
现有清单{1,3,5,9,13,15}
结果清单{2,4,6,7,8,10,11,12,14}
答案 0 :(得分:3)
扩展TCL具有函数intersect3
,其作为其返回值之一给出了A-B
的列表。您可以将列表与列表中所有可能数字的列表相交。
如果您不使用扩展TCL,则必须自己实施。
我几乎没有使用TCL,所以也许有更好的方法,但基本的方法是只对列表进行排序,然后运行它并找到缺失的值:
#!/usr/bin/tclsh
set A {1 3 5 9 13 15}
set A [lsort -integer $A]
set B {}
set x 0
set y [lindex $A $x]
while {$x < [llength $A]} {
set i [lindex $A $x]
while {$y < $i} {
lappend B $y
incr y
}
incr x
incr y
}
puts $B
输出:
2 4 6 7 8 10 11 12 14
答案 1 :(得分:1)
package require Tcl 8.5
set A {1 3 5 9 13 15}
set result [list]
for {set i [lindex $A 0]; incr i} {$i < [lindex $A end]} {incr i} {
if {$i ni $A} {
lappend result $i
}
}
请参阅http://tcl.tk/man/tcl8.5/TclCmd/expr.htm#M15了解“ni”运算符。