Ответ 1
Subsets[{1, 2, 3}, {2}]
является встроенным способом.
Каждый раз, когда я должен это делать, я "изобретаю" другой способ. Время стандартизации. Я подозреваю, что есть некоторая команда по умолчанию, которую я забыл, готов сделать это, поэтому я извиняюсь заранее, если вопрос слишком тривиален.
Чем лучше (память, производительность) способ получить:
combinations[{1,2,3},2] = {{1,2},{1,3},{2,3}}
с произвольными элементами в списке ввода, конечно.
Subsets[{1, 2, 3}, {2}]
является встроенным способом.
До того, как в качестве основной функции был добавлен 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} *)
Эта последняя функция может быть очень полезна для управления памятью.