我正在尝试使用GatherBy
Mathematica 中的函数来获取列表中的对a={{1, 4}, {2, 3}, {1, 5}, {2, 5}, {3, 4}, {6, 8}, {6, 7}, {7, 8}}
并按包含值 1 的对进行排序。理想情况下,输出看起来像Output={ { {1,4},{1,5} } , {{2, 3}, {2, 5}, {3, 4}, {6, 8}, {6, 7}, {7, 8} } }
或类似的东西,其中输出中的第一个元素是列表包含 1 的所有元素,a
第二个元素包含所有不包含 1 的对。
问问题
278 次
2 回答
1
GatherBy[a, #[[1]] == 1 || #[[2]] == 1 &]
于 2013-06-18T18:26:12.420 回答
0
回答评论中的 q,Sort
确保所需顺序的结果:
a = {{1, 4}, {2, 3}, {1, 5}, {2, 5}, {3, 4}, {6, 8}, {6, 7}, {7, 8}};
SortBy[GatherBy[a, MemberQ[#, 2] &], !MemberQ[First@#, 2] &]
另一种方法:
Reap[Sow[ # , MemberQ[#, 2] ] & /@ a, {True, False}] // Last
要么产生:
{{{{2, 3}, {2, 5}}}, {{{1, 4}, {1, 5}, {3, 4}, {6, 8}, {6, 7}, {7,
8}}}}
于 2015-02-17T13:44:34.480 回答