2011-04-27 115 views
13

每次我必须这样做时,我“发明”了一种不同的方式。时间标准化。我怀疑有一些默认命令我忽略了这一点,所以如果问题太微不足道,我很抱歉。生成组合

什么是更好的(内存,性能)的方式来获得:

combinations[{1,2,3},2] = {{1,2},{1,3},{2,3}} 

与输入列表中的任意元素,当然。

+0

如果您认为要搜索“子集”,这只是微不足道的。如果你相当合理地只考虑搜索“组合”,那么,你刚刚通过问这个问题为所有这些未来的人们做了很好的服务! – dreeves 2011-04-27 20:42:22

+0

@ dreeves谢谢sooo多!现在,如果你真的想要责怪我,看看第三行代码** I **写在这里http://stackoverflow.com/questions/3815496/plotting-linear-inequalities-in-mathematica/3868677#3868677 – 2011-04-27 20:55:28

+0

我在帮助中心花了两个步骤:组合=>元组=>子集(当然我已经知道了,所以这可能有所帮助) – 2011-04-27 21:09:31

回答

17
Subsets[{1, 2, 3}, {2}] 

是内置的方式。

+0

该死的,我知道这太微不足道了:)。谢谢! – 2011-04-27 18:39:22

+0

cah,祝贺开明徽章! – 2011-04-28 01:09:43

7

在添加Subsets作为核心功能之前,Combinatorica功能KSubsets可用。

Needs["Combinatorica`"] 

KSubsets[{1, 2, 3}, 2] 

(* {{1, 2}, {1, 3}, {2, 3}} *) 

Combinatorica还提供了额外的功能,如NextKSubset

NextKSubset[{1, 2, 3}, {1, 3}] 

(* {2, 3} *) 

这最后一个功能可以为内存管理非常有帮助。

+0

你到4000!恭喜...现在4010 – 2011-04-27 21:01:41

+0

@belisarius谢谢。 :d – 2011-04-27 21:02:08