2017-06-29 9 views
13

मैं पूर्णांक को पूर्णांक क्रमबद्ध कैसे कर सकता हूं? इस तरह:पूर्णांक को क्रमबद्ध रूप से क्रमबद्ध करने के लिए कैसे करें

integers = [10, 1, 101, 2, 111, 212, 100000, 22, 222, 112, 10101, 1100, 11, 0] 

अजगर कंसोल पर इस तरह मुद्रित

[0, 1, 10, 100000, 101, 10101, 11, 1100, 111, 112, 2, 212, 22, 222] 

मैं इस

def sort_integers(integers): 
    return sorted(integers) 

की कोशिश की है, लेकिन मैं आप इसे इस तरह से करना है लगता है

def sort_integers(integers): 
    return sorted(integers, key = lambda.......) 

मुझे नहीं पता कि डब्ल्यू क्या करना है लैम्ब्डा के बाद संस्कार?

उत्तर

27
sorted(integers, key=str) 

-> 
[0, 1, 10, 100000, 101, 10101, 11, 1100, 111, 112, 2, 212, 22, 222] 

स्पष्टीकरण: str एक ऐसा फ़ंक्शन है जो तारों में पूर्णांक को रोकता है। चूंकि sorted डिफ़ॉल्ट रूप से तारों को क्रमबद्ध रूप से टाइप करता है, यह वही करता है जो आपने पूछा था।

11

आप बस का उपयोग कर सकते strkey के रूप में:

sorted(integers,key=str)

तो प्रत्येक तत्व के लिए यहाँ, str समारोह कहा जाता है, जो एक str आईएनजी में int बदल देता है। वह खुद शानदार नहीं है। लेकिन तुलना तारों की तुलना अलग है: यह शब्दावली से संबंधित है।

>>> sorted([0, 1, 10, 100000, 101, 10101, 11, 1100, 111, 112, 2, 212, 22, 222],key=str) 
[0, 1, 10, 100000, 101, 10101, 11, 1100, 111, 112, 2, 212, 22, 222] 
4

आप अपने पूर्णांकों सॉर्ट करने के लिए कोषगत रूप में यदि वे तार थे, तो आप अजगर बता सकते हैं उन्हें स्ट्रिंग के रूप में इलाज के लिए है, जबकि छँटाई चाहते हैं:

>>> integers = [10, 1, 101, 2, 111, 212, 100000, 22, 222, 112, 10101, 1100, 11, 0] 
>>> sorted(integers, key=lambda n: str(n)) 
[0, 1, 10, 100000, 101, 10101, 11, 1100, 111, 112, 2, 212, 22, 222] 
>>> 

लेकिन आप वास्तव में भी है की जरूरत नहीं है lambda n: ... भाग या तो। आप आसानी से str फ़ंक्शन को key के रूप में पास कर सकते हैं और पायथन को पता चलेगा कि क्या करना है। बुला str(n) जहां n अपनी सूची में प्रत्येक तत्व है:

>>> sorted(integers, key=str) 
[0, 1, 10, 100000, 101, 10101, 11, 1100, 111, 112, 2, 212, 22, 222] 
>>> 

तो अपने समारोह खत्म होता जा रहा है:

def sort_integers(integers): 
    return sorted(integers, key=str) 
0

इस काम करेंगे

list(map(int, (sorted(str(i) for i in integers)))) 

उत्पादन:

[0, 1, 10, 100000, 101, 10101, 11, 1100, 111, 112, 2, 212, 22, 222] 
+1

लेकिन वह परिणामस्वरूप सूची को पूर्णांक के रूप में चाहता है। –

+1

धन्यवाद, भूल गया। – Alter

+1

अपडेट किया गया आपके सॉर्ट किए गए कॉल को ऐसा करने की आवश्यकता नहीं है जो यह कर रहा है। बाकी उत्तरों के समान ही अपनी सूची को एक प्रमुख तर्क के साथ पास करें। – idjaw

0

Most Significant Digit Radix Sort आज़माएं। यह पूर्णांक को स्ट्रिंग में कनवर्ट करने से बचाता है, लेकिन जब तक आप लाइब्रेरी या अन्य प्री-लिखित code का उपयोग नहीं करते हैं तब तक लागू करने के लिए कठिन होता है।

+1

के बारे में पता नहीं था, जबकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, [यह बेहतर होगा] (// meta.stackoverflow।कॉम/क्यू/825 9) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। –

संबंधित मुद्दे