tcl从列表中删除多余的项目

时间:2014-12-09 15:19:21

标签: list tcl duplicate-removal

我是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}}

有一种简单的方法吗?

2 个答案:

答案 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}}