पायथन में, विभिन्न डेटा हेरफेर कार्यों के लिए यह निर्धारित करना आवश्यक है कि एक सूची के तत्व दूसरी सूची में मौजूद हैं या नहीं। यह आलेख इस ओवरलैप का परीक्षण करने, उनकी दक्षता का मूल्यांकन करने और सर्वोत्तम अभ्यास प्रदान करने के लिए विभिन्न तरीकों की खोज करता है।
1. जेनरेटर एक्सप्रेशन
any(i in a for i in b)
यह विधि एक सूची के माध्यम से पुनरावृत्त होती है और दूसरे में सदस्यता की जांच करती है, यदि मिलान होता है तो True लौटता है मिला। इसकी समय जटिलता O(n) है, जहां n बड़ी सूची की लंबाई है।
2। सेट इंटरसेक्शन
bool(set(a) & set(b))
यह दृष्टिकोण दोनों सूचियों को सेट में परिवर्तित करता है और उनका इंटरसेक्शन ढूंढता है। यदि चौराहा गैर-रिक्त है, तो यह सत्य लौटाता है। इसके लिए सबसे खराब स्थिति वाली समय जटिलता O(n m) है, जहां n और m सूचियों की लंबाई हैं।
3. हाइब्रिड सेट इंटरसेक्शन
a = set(a)
any(i in a for i in b)
यह विधि केवल एक सूची को एक सेट में परिवर्तित करती है और दूसरे के माध्यम से पुनरावृत्त करती है, सेट सदस्यता की जांच करती है। यह मध्यस्थ सेटों के निर्माण से बचाता है, जिससे यह पारंपरिक सेट इंटरसेक्शन की तुलना में तेज़ हो जाता है।
4. Isdisjoint विधि
not set(a).isdisjoint(b)
यह दृष्टिकोण यह निर्धारित करने के लिए जमे हुए सेट की isdisjoint विधि का उपयोग करता है कि क्या उनमें कोई सामान्य तत्व हैं। यदि वे ऐसा नहीं करते हैं, तो परिणाम गलत है; अन्यथा, यह सच है। ]सेट चौराहा: O(n m)
Isdisjoint विधि: O(1)
ज्यादातर मामलों में, isdisjoint विधि सबसे तेज़ है क्योंकि यह निरंतर-समय निर्धारित सदस्यता जांच से लाभान्वित होती है।विचार करने योग्य कारक:
सूची आकार
सर्वश्रेष्ठ अभ्यास
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3