我是tcl的新手,我想从对列表中删除多余的项目。这是样本列表
set example_list {{1 0} {0 1} {1 4} {3 5} {6 7} {4 1} {2 1} {1 5} {5 3}}
我想退回清单。
{{1 0} {1 4} {3 5} {6 7} {2 1} {1 5}}
有一种简单的方法吗?
答案 0 :(得分:1)
使用Tcl 8.6,您可以这样做:
set pairs [lsort -unique [lmap l $example_list {lsort -integer $l}]]
它使用lmap
为每对应用整数lsort
,因此重复对获得相同的字符串表示,然后lsort -unique
删除重复项(尽管重新排序;希望不会没问题。
答案 1 :(得分:0)
归功于lequal
proc lequal {l1 l2} {
foreach elem $l1 {
if {$elem ni $l2} {return 1}
}
foreach elem $l2 {
if {$elem ni $l1} {return 1}
}
return 0
}
set l [list [lindex $example_list 0]]
foreach elem1 $example_list {
set found 0
foreach elem2 $l {
if { [lequal $elem1 $elem2] == 0 } {
set found 1
break
}
}
if { $found == 0 } {
lappend l $elem1
}
}
比较器:
{{1}}