मैं अपने दूसरे तत्वों द्वारा tuples की एक सूची सॉर्ट करना चाहता हूं।अपने दूसरे तत्वों द्वारा tuples की एक सूची क्रमबद्ध करें
उदाहरण इनपुट:
[("Bob",3),("Terry",1)]
उदाहरण आउटपुट:
[("Terry",1)("Bob",3)]
मैं अपने दूसरे तत्वों द्वारा tuples की एक सूची सॉर्ट करना चाहता हूं।अपने दूसरे तत्वों द्वारा tuples की एक सूची क्रमबद्ध करें
उदाहरण इनपुट:
[("Bob",3),("Terry",1)]
उदाहरण आउटपुट:
[("Terry",1)("Bob",3)]
आप उपयोग कर सकते हैं sortBy
और comparing
:
sortBy :: (a -> a -> Ordering) -> [a] -> [a]
comparing :: (Ord b) => (a -> b) -> a -> a -> Ordering
इस मामले में, हम दूसरा तत्व द्वारा की तुलना करना चाहते । आप comparing snd
का उपयोग ऐसे फ़ंक्शन को प्राप्त करने के लिए कर सकते हैं जो दो टुपल्स को उनके दूसरे तत्व से तुलना कर सकता है।
import Data.Function (on)
import Data.List (sortBy)
sortBy (compare `on` snd) [...]
नहीं comparing
की तुलना में बहुत अलग है, लेकिन समय-समय पर एक अच्छा चाल:
अगर मैं कहीं से भी कॉल करने के लिए अपना खुद का सॉर्टिंग फ़ंक्शन परिभाषित करना चाहता था तो मैं यह कैसे कर सकता हूं? मुझे इसे – user1214840
से अधिक बार उपयोग करने की आवश्यकता हो सकती है। दूसरे शब्दों में, मैं अपने स्वयं के सॉर्टिंग फ़ंक्शन को परिभाषित करना चाहता था जो ट्यूपल्स की एक बिट्स को अपने दूसरे तत्व के आधार पर लेता है और फिर टुपल्स की वही क्रमबद्ध सूची देता है। – user1214840
@ user1214840 किसी भी अन्य परिभाषा के समान: 'myFancySort = {- यहां ehird के संकेतों का उपयोग करके कार्यान्वयन -} ' –
एक और शांत चाल Data.Function से on
उपयोग करने के लिए है।
' पर 'कुछ अच्छी चाल है। मैं कभी-कभी उपयोगी होने के लिए 'equating = on (==)' ढूंढता हूं। (तुलना की तुलना में तुलना = –
पर विचार करें एक "नियमित" प्रकार
sort xs = ... a < b ...
इस तरह के प्रकार compare
का इस्तेमाल करते हैं चाहिए, या इस तरह के <
के रूप में अपनी मित्र। तो अगर आपने पहले से ही ऐसी चीज लागू की है, तो बस compare a b
या a < b
की बजाय, आप इसके बजाय compare (snd a) (snd b)
या snd a < snd b
कर सकते हैं।
sort xs = ... snd a < snd b ...
बेशक आप स्मार्ट मिलता है, तो आप करेंगे बाहर "एक्सेसर", और यह छँटाई समारोह के लिए एक अतिरिक्त इनपुट बनाने के सार:
sortComparingOn f xs = ... f a < f b ...
तुम भी बाहर सार तुलनित्र हो सकता है पूरी तरह : ehird के रूप में उल्लेख
sortBy cmp xs = ... a `cmp` b ...
sortBy
, Data.List में प्रदान की जाती है।
क्या यह एक होमवर्क प्रश्न है? यदि ऐसा है, तो आपको 'होमवर्क' टैग जोड़ना चाहिए। –