मूल्यों का एक सेट छाँटना [बंद]


112

मेरे पास इस तरह के मूल्य हैं:

set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000'])
set(['4.918859000', '0.060758000', '4.917336999', '0.003949999', '0.013945000', '10.281522000', '0.025082999'])  

मैं setबढ़ते हुए क्रम में प्रत्येक में मूल्यों को क्रमबद्ध करना चाहता हूं । मैं सेटों के बीच छंटनी नहीं करना चाहता, लेकिन प्रत्येक सेट में मूल्य।


3
टुपल्स को समस्या के साथ क्या करना है और आपने क्या प्रयास किया है?
— फ्रेड फू

3
मुझे नहीं लगता कि अजगर सेट में ऑर्डर करने की अवधारणा है। यह आपकी मदद कर सकता है: stackoverflow.com/questions/1653970/…
— zallarak

3
एक सेट क्रमहीन है। यह गुणों में से एक है। हर भाषा में। का उपयोग करें list।
— कारोली होर्वाथ

4
@KarolyHorvath "एक सेट क्रमहीन है। यह एक गुण है। यह हर भाषा में है।" C ++ std::setका आदेश दिया गया है।
— टिमोथी शील्ड

17
तथ्य के बाद लोगों ने इस प्रश्न को बंद (या ऑफ-टॉपिक) क्यों किया? हां, बेहतर होता कि ओपी ने अपनी समस्या का वर्णन करने के बजाय हमें उससे बाहर कर दिया। लेकिन अब जब हमने ऐसा कर लिया है, और अपने प्रश्न को मिलान करने के लिए संपादित किया है, और उसने एक उत्तर स्वीकार किया है, मुझे नहीं दिखता कि करीबी वोट कैसे समझ में आता है।
— २१:

जवाबों:


218

एक टिप्पणी से:

मैं प्रत्येक सेट को क्रमबद्ध करना चाहता हूं।

यह आसान है। किसी भी सेट s(या कुछ और चलने योग्य) के लिए, क्रमबद्ध क्रम sorted(s)के तत्वों की सूची देता है s:

>>> s = set(['0.000000000', '0.009518000', '10.277200999', '0.030810999', '0.018384000', '4.918560000'])
>>> sorted(s)
['0.000000000', '0.009518000', '0.018384000', '0.030810999', '10.277200999', '4.918560000']

ध्यान दें कि sortedआपको ए list, नहीं दे रहा है set। ऐसा इसलिए है क्योंकि गणित और लगभग हर प्रोग्रामिंग भाषा में , एक सेट का पूरा बिंदु , * यह है कि यह क्रमबद्ध नहीं है: सेट {1, 2}और {2, 1}एक ही सेट हैं।


आप शायद उन तत्वों को तार के रूप में क्रमबद्ध नहीं करना चाहते हैं, लेकिन संख्या के रूप में (इसलिए 4.918560000 बाद में 10.277200999 से पहले आ जाएगा)।

सबसे अच्छा समाधान सबसे पहले संख्याओं के बजाय संख्याओं को स्टोर करने की संभावना है। लेकिन यदि नहीं, तो आपको केवल एक keyफ़ंक्शन का उपयोग करने की आवश्यकता है :

>>> sorted(s, key=float)
['0.000000000', '0.009518000', '0.018384000', '0.030810999', '4.918560000', '10.277200999']

अधिक जानकारी के लिए, आधिकारिक डॉक्स में सॉर्टिंग HOWTO देखें ।


* अपवादों के लिए टिप्पणियाँ देखें।


1
@TimothyShields: आप सही कह रहे हैं, मुझे "हर प्रोग्रामिंग भाषा को आम शब्दों का दुरुपयोग करना पसंद नहीं है" कहना चाहिए था। ऐसी भाषा में जहां "गैर-संशोधित" का अर्थ "उत्परिवर्तन" होता है, यह आश्चर्य की बात नहीं है कि setइसका अर्थ "क्रमबद्ध सूची" है, और आपको unordered_set"सेट" का मतलब कहना होगा ...
— 21

2
चाहे वह नाम अच्छा हो या बुरा वह चर्चा के लिए नहीं है। यह कथन कि "किसी भी भाषा में सेट कभी आदेश नहीं दिया जाता है" गलत है।
— टिमोथी शील्ड

5
आपको गणितीय सेट के बारे में विकिपीडिया पृष्ठ पर "अनियंत्रित" शब्द नहीं मिलेगा। आपको "आदेश दिया गया" शब्द भी नहीं मिलेगा। ऐसा इसलिए है क्योंकि यह सेट पर गणितीय कार्यों के लिए अप्रासंगिक है। क्या कोई विशेष भाषा सेट किए गए आदेशों का चयन करती है, एक कार्यान्वयन विवरण है। en.wikipedia.org/wiki/Set_(mathematics)
— टिमोथी शील्ड्स

3
@TimothyShields: इस बीच, आपके द्वारा लिंक किए गए सेट (गणित) पर विकिपीडिया पृष्ठ में "अव्यक्त" शब्द नहीं है क्योंकि यह परिभाषा से पहले से ही स्पष्ट है। विशेष रूप से, "सेट ए और बी समान हैं यदि और केवल अगर उनके पास समान तत्व हैं"। आदेशित संग्रहों के लिए यह सही नहीं है। (इस तरह के वाक्य भी हैं: "वह क्रम जिसमें एक सेट या मल्टीसेट के तत्व सूचीबद्ध हैं, अप्रासंगिक है", इसलिए यदि आपने अभी थोड़ा अलग खोजा है तो आप इसे अवधारणा को समझे बिना भी पा सकते हैं।)
— abarert

3
@TimothyShields: लेकिन ऑर्डरिंग std::set को उजागर करता है (न कि केवल एपीआई के माध्यम से स्पष्ट तरीकों से; आदेश देने वाला फ़ंक्शन वास्तव में किसी दिए गए सेट के प्रकार का हिस्सा है )। तथ्य यह है कि तत्वों को हमेशा एक सख्त कमजोर क्रम द्वारा क्रमबद्ध रखा जाता है, अवधारणा की बहुत परिभाषा का हिस्सा है। तो, आपका तर्क मूट है। लेकिन यहां तक ​​कि अगर यह नहीं थे, तो यह क्यों मायने रखेगा? लगभग हर प्रोग्रामिंग लैंग्वेज में सेट अनऑर्डर किए जाते हैं, जैसे वे गणित में होते हैं। यह तथ्य यह है कि एक बाहरी भाषा है जो शब्द का उपयोग कुछ और करने के लिए करती है जो उस कथन को कम सच नहीं बनाती है।
— अपराह्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.