生成组合

Dr.*_*ius 13 wolfram-mathematica

每次我必须这样做,我"发明"一种不同的方式.是时候标准化了.我怀疑有一些默认命令我忽略了准备这样做,所以如果问题太微不足道,我很抱歉.

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

 combinations[{1,2,3},2] = {{1,2},{1,3},{2,3}}
Run Code Online (Sandbox Code Playgroud)

当然,输入列表中包含任意元素.

cah*_*cah 17

Subsets[{1, 2, 3}, {2}]
Run Code Online (Sandbox Code Playgroud)

是内置的方式.


Mr.*_*ard 7

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

Needs["Combinatorica`"]

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

(*  {{1, 2}, {1, 3}, {2, 3}}  *)
Run Code Online (Sandbox Code Playgroud)

Combinatorica仍提供其他功能,例如NextKSubset:

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

(*  {2, 3}  *)
Run Code Online (Sandbox Code Playgroud)

最后一个函数对内存管理非常有用.