Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में नेस्टेड लिस्ट इटरेटर को फ्लैट करें


मान लीजिए हमारे पास पूर्णांकों की एक नेस्टेड लिस्ट है; हमें इसे फ्लैट करने के लिए एक इटरेटर लागू करना है। प्रत्येक एलिमेंट या तो एक इंटीजर है, या एक लिस्ट। उस लिस्ट के एलिमेंट्स भी इंटीजर या अन्य लिस्ट हो सकते हैं। इसलिए यदि इनपुट [[1, 1], 2, [1, 1]] जैसा है, तो आउटपुट [1, 1, 2, 1, 1] होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • इनिशियलाइज़िंग सेक्शन में, यह नेस्टेड लिस्ट लेगा, यह निम्नानुसार काम करेगा -

  • res को खाली लिस्ट के रूप में सेट करें, index := 0, getVal(nestedList) कॉल करें

  • getVal() nestedIntegers लेगा, यह निम्नानुसार काम करेगा -

  • nestedIntegers में प्रत्येक i के लिए

    • यदि i एक इंटीजर है, तो i को res ऐरे में इन्सर्ट करें, अन्यथा getVal(i लिस्ट) कॉल करें

  • next() मेथड इंडेक्स द्वारा इंगित मान लौटाएगा, और इंडेक्स को 1 से बढ़ाएगा

  • hasNext() true लौटाएगा, जब इसके बाद कोई एलिमेंट हो, अन्यथा false

उदाहरण (पायथन)

बेहतर समझ पाने के लिए निम्न कार्यान्वयन देखें -

class NestedIterator(object):
    def __init__(self, nestedList):
        self.res = []
        self.index = 0
        self.getVal(nestedList)
        #print(self.res)
    def getVal(self,NestedList):
        for item in NestedList:
            if isinstance(item, int):
                self.res.append(item)
            else:
                self.getVal(item)
    def next(self):
        self.index+=1
        return self.res[self.index-1]
    def hasNext(self):
        if self.index == len(self.res):
            return False
        return True

ob = NestedIterator([[1,1],2,[1,1]])
while ob.hasNext():
    print(ob.next())

इनपुट

[[1,1],2,[1,1]]

आउटपुट

1
1
2
1
1

  1. - पायथन इटरेटर टाइप्स

    पायथन में कंटेनर्स पर इटरेशन कॉन्सेप्ट होता है। इटरेटर्स के दो विशिष्ट फंक्शन्स होते हैं। इन फंक्शन्स का उपयोग करके, हम इटरेशन सपोर्ट करने के लिए यूजर-डिफाइंड क्लासेस बना सकते हैं। ये फंक्शन्स हैं __iter__() और __next__()।__iter__() मेथड__iter__() मेथड इटरेटर ऑब्जेक्ट लौटाता है। यदि एक क्लास विभिन्न

  1. - पायथन में इटरेटर फंक्शन

    व्याख्याइटरेटर पायथन में एक ऑब्जेक्ट है जो इटरेशन प्रोटोकॉल को लागू करता है। टपल्स, लिस्ट्स, सेट्स पायथन में इनबिल्ट इटरेटर्स कहलाते हैं। इटरेशन प्रोटोकॉल में दो प्रकार के मेथड होते हैं।__iter__(): यह मेथड तब कॉल होता है जब हम एक इटरेटर इनिशियलाइज़ करते हैं और यह एक ऑब्जेक्ट लौटाना चाहिए जिसमें next

  1. - Python में शैलो लिस्ट को फ्लैट कैसे करें?

    एक सिंपल और सीधा समाधान है दो नेस्टेड फॉर लूप्स का उपयोग करके सबलिस्ट्स से आइटम्स को एक फ्लैट लिस्ट में जोड़ना। lst = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]] flatlist = [] for sublist in lst: for item in sublist: flatlist.append(item) print(flatlist) एक अधिक कॉम्पैक्ट