आदेश देने वाली सूची
Sep 08 2020
क्या किसी को पता है कि 'list1' से 'list2' कैसे प्राप्त करें? ... ... क्योंकि मैं भ्रमित हो गया। एल्गोरिथ्म का उपयोग बहुत बड़ी सूचियों के लिए किया जाएगा।
list1 = {{1, 35, 3}, {1, 896, 1}, {2, 3, 999}, {1, 212, 5}, {1, 243, 1}, {3, 2, 88}, {1, 903, 3}, {35, 1, 9}, {1, 914, 1}, {1, 925, 2}, {896, 1, -6}};
list2={{{1, 35, 3}, {35, 1, 9}}, {{1, 896, 1}, {896, 1, -6}}, {{2, 3, 999}, {3, 2, 88}}, {1, 212,5}, {1, 243, 1}, {1, 903, 3}, {1, 914, 1}, {1, 925, 2}};
बेशक, आदेश कोई फर्क नहीं पड़ता। सबसे महत्वपूर्ण बात यह है कि तत्व # 1 [[1]] == # 2 [[2]] || # 1 [[2]] == # 2 [[1]] एक सूची में हैं।
जवाब
5 kglr Sep 08 2020 at 19:57
Gather[list1, #[[;;2]] == Reverse @ #2[[;;2]] &] /. {x_} :> x
{{{1, 35, 3}, {35, 1, 9}}, {{1, 896, 1}, {896, 1, -6}}, {{2, 3, 999}, {3, 2, 88}}, {1, 212, 5}, {1, 243, 1}, {1, 903, 3}, {1, 914, 1}, {1, 925, 2}}
यदि इनपुट सूची ट्रिपल की एक सूची है, तो आप भी उपयोग कर सकते हैं Most[#]के स्थान पर #[[;; 2]] &।
हम इसका list1उपयोग करने के लिए एक ग्राफ का निर्माण भी कर सकते हैं RelationGraphऔर इसके ConnectedComponentsलिए समान समूह प्राप्त कर सकते हैं:
relation = #[[;; 2]] == Reverse @ #2[[;; 2]] &;
ConnectedComponents @ RelationGraph[relation, list1] /. {x_} :> x
{{{2, 3, 999}, {3, 2, 88}}, {{1, 896, 1}, {896, 1, -6}}, {{1, 35, 3}, {35, 1, 9}}, {1, 925, 2}, {1, 914, 1}, {1, 903, 3}, {1, 243, 1}, {1, 212, 5}}