首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在tcl中找到两个列表的联合?

如何在tcl中找到两个列表的联合?
EN

Stack Overflow用户
提问于 2017-03-22 15:10:46
回答 3查看 1.2K关注 0票数 2

我熟悉两个列表的交集,但是,我希望在tcl中找到两个列表的联合(同时消除重复列表)。我确实有这段代码的工作副本,但我不确定它是否对任何类型/数量的列表都足够健壮,因此我正在寻找一个更好的解决方案。

任何帮助或想法都会受到欢迎。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-22 15:29:27

如果您将列表作为集合来处理,那么您就不必担心项目是否有序,只需对连接列表进行排序:

代码语言:javascript
复制
set union [lsort -unique [list {*}$list1 {*}$list2]]
票数 7
EN

Stack Overflow用户

发布于 2017-03-22 18:15:30

Tclx提供了一个联合命令:

代码语言:javascript
复制
% info patchlevel
8.5.9
% set a [list a b c]
a b c
% set b [list a d e]
a d e
% package require Tclx
8.4
% union $a $b
a b c d e
% 
% union
wrong # args: should be "union lista listb"
%
票数 3
EN

Stack Overflow用户

发布于 2017-03-22 20:14:42

不需要排序的一种方法是使用字典键作为集合:

代码语言:javascript
复制
% set a [list a b c]
a b c
% set b [list a d e]
a d e
% set d {}
% foreach k $a { dict set d $k . }
% foreach k $b { dict set d $k . }
% set c [dict keys $d]
a b c d e

这样做的优点是根本不需要排序,这对于大输入集有很大的帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42955624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档