2010-07-07 20 views
16

किसी भी अजगर का निर्माण-इन या एक हल कर अनुक्रम में खोज करने के लिए व्यापक रूप से इस्तेमाल पायथन पुस्तकालयों वहाँ हैं?एक क्रमबद्ध सूची खोज रहे हैं?

+1

अनुक्रम? इसके अलावा, किस तरह की खोज (बाइनरी, आदि)? –

+0

मेरा मानना ​​है कि प्रश्न "प्रामाणिक" या "सामान्य" और इतने "अनुक्रम" का अर्थ एक 'sequence' की [अजगर प्रलेखन परिभाषा (का उपयोग कर किया जा सकता है होना करने के लिए कोशिश कर रहा है यानी अजगर 2.x" वहाँ सात अनुक्रम प्रकार हैं: तार, यूनिकोड तार, सूचियों, tuples, bytearrays, बफ़र्स, और xrange वस्तुओं। ")] (https://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple -bytearray-buffer-xrange) –

उत्तर

22

bisect मानक पुस्तकालय का हिस्सा है - उस चीज़ की तरह आप के लिए देख रहे हैं?

+0

जो यह नहीं बताता कि सूची में मूल्य कैसे खोजा जाए। –

13

यह ध्यान देने योग्य है कि एक क्रमबद्ध सूची बनाए रखने के लिए कुछ उच्च गुणवत्ता वाले पायथन पुस्तकालय हैं जो तेजी से खोज को लागू करते हैं: sortedcontainers और blist। इनका उपयोग इस बात पर निर्भर करता है कि आप कितनी बार सूची से तत्वों को सम्मिलित/हटा रहे हैं और खोज करने की आवश्यकता है। उनमें से प्रत्येक मॉड्यूल SortedList वर्ग प्रदान करता है जो क्रमशः क्रमबद्ध क्रम में आइटम को बनाए रखता है।

SortedList के लिए दस्तावेज़ से:

L.bisect_left(value) 
    Similar to the bisect module in the standard library, this returns 
    an appropriate index to insert value in L. If value is already present 
    in L, the insertion point will be before (to the left of) any existing 
    entries. 

L.bisect(value) 
    Same as bisect_left. 

L.bisect_right(value) 
    Same as bisect_left, but if value is already present in L, the 
    insertion point will be after (to the right of) any existing entries. 

दोनों कार्यान्वयन द्विआधारी खोज का उपयोग को देखते हुए मूल्य की सही सूचकांक खोजने के लिए। दो मॉड्यूल के बीच चयन करने के लिए performance comparison पृष्ठ है।

अस्वीकरण: मैं सॉर्ट किए गए कंटेनर मॉड्यूल का लेखक हूं। क्या की

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