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

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


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

होगा।

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

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

  • रेस को खाली सूची के रूप में सेट करें, अनुक्रमणिका:=0, getVal (नेस्टेडलिस्ट) पर कॉल करें

  • getVal() नेस्टेडइंटर लेगा, यह इस तरह काम करेगा -

  • मेरे लिए नेस्टेडइंटर में

    • अगर मैं एक पूर्णांक हूं, तो i को रेस ऐरे में डालें, अन्यथा getVal (i सूची) को कॉल करें

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

  • हैनेक्स्ट () सही लौटेगा, जब इसके आगे कोई तत्व होगा, अन्यथा गलत

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

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

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. पायथन इटरेटर प्रकार

    पायथन में कंटेनरों पर पुनरावृत्ति अवधारणाएं हैं। Iterators के दो अलग-अलग कार्य हैं। इन कार्यों का उपयोग करके, हम पुनरावृत्ति का समर्थन करने के लिए उपयोगकर्ता परिभाषित कक्षाओं का उपयोग कर सकते हैं। ये कार्य हैं __iter__() और __next__() । विधि __iter__() __iter__() विधि पुनरावर्तक वस्तु लौटाती है। य

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

    स्पष्टीकरण इटरेटर अजगर में एक वस्तु है जो पुनरावृत्ति प्रोटोकॉल को लागू करता है। टुपल्स, सूचियों, सेटों को पायथन में इनबिल्ट इटरेटर कहा जाता है। पुनरावृत्ति प्रोटोकॉल में दो प्रकार की विधियाँ हैं। __iter__() : इस विधि को तब कहा जाता है जब हम एक इटरेटर को इनिशियलाइज़ करते हैं और इसे एक ऑब्जेक्ट वाप

  1. पायथन में उथली सूची को कैसे फ़्लैट करें?

    दो नेस्टेड लूप का उपयोग करके एक फ्लैट सूची में सबलिस्ट से आइटम जोड़ना एक सरल और सीधा समाधान है। 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) एक अधिक कॉम्पैक्ट और पाइथोनिक समाध