यहाँ एक कदाचित सरल समस्या यह है आदेश दिया-पूर्णांक का एक सेट में शामिल होना: iterators कि आरोही क्रम में पूर्णांक के दृश्यों उपज की एक सूची दी गई है, एक संक्षिप्त जनरेटर कि पैदावार केवल पूर्णांकों है कि हर दृश्य में दिखाई देते हैं लिखें।अजगर iterators उपज
कल रात कुछ कागजात पढ़ने के बाद, मैंने पाइथन, as seen here में एक पूरी तरह से न्यूनतम पूर्ण पाठ सूचकांक को हैक करने का फैसला किया (हालांकि वह संस्करण अब पुराना है)।
मेरी समस्या search()
फ़ंक्शन के साथ है, जो प्रत्येक पोस्टिंग सूची पर फिर से चलनी चाहिए और प्रत्येक सूची में दिखाई देने वाली केवल दस्तावेज़ आईडी उत्पन्न करती है। जैसा कि आप उपरोक्त लिंक से देख सकते हैं, मेरा वर्तमान गैर-पुनरावर्ती 'कामकाजी' प्रयास भयानक है।
उदाहरण:
postings = [[1, 100, 142, 322, 12312],
[2, 100, 101, 322, 1221],
[100, 142, 322, 956, 1222]]
उपज चाहिए:
[100, 322]
इस के लिए कम से कम एक सुरुचिपूर्ण पुनरावर्ती क्रिया समाधान है, लेकिन मुझे लगता है कि यदि संभव हो तो से बचने के लिए चाहते हैं। हालांकि, एक समाधान नेस्टेड जनरेटर भाव, itertools
दुरुपयोग, या कोड गोल्फ के किसी भी अन्य प्रकार से जुड़े स्वागत से अधिक है। :-)
यह वहाँ के रूप में स्मृति में पूर्णांक के पूरे सेट चूसने के बिना सबसे छोटी सूची में आइटम्स, और कर रहे हैं केवल के रूप में कई चरणों की आवश्यकता करने के लिए समारोह के लिए व्यवस्था करने के लिए संभव हो जाना चाहिए। भविष्य में, इन सूचियों को डिस्क से पढ़ा जा सकता है, और उपलब्ध रैम से बड़ा हो सकता है।
पिछले 30 मिनट के लिए मैं अपनी जीभ की नोक पर एक विचार किया है, लेकिन मैं काफी यह कोड में नहीं मिल सकता है। याद रखें, यह सिर्फ मजेदार है!
बहुत बढ़िया!मुझे पता था कि यह मानक पुस्तकालय में होना चाहिए था। अफसोस की बात केवल Python 2.6 के लिए, लेकिन यह ठीक है। – dmw
वाह, ठंडा समाधान! –
अच्छा समाधान, हालांकि यह मानता है कि पूर्णांक को एक ही पुनरावर्तक के भीतर कभी दोहराया नहीं जाता है, जो ओपी की अनुमति नहीं है। पोस्टिंग = [[100,100], [1,1]] [100,1] लौटाता है भले ही सूचियों में कोई मूल्य दोहराया न जाए। – Triptych