কম্পিউটার

পাইথনে নেস্টেড লিস্ট ইটারেটর সমতল করুন


ধরুন আমাদের কাছে পূর্ণসংখ্যার একটি নেস্টেড তালিকা আছে; এটি সমতল করার জন্য আমাদের একটি পুনরাবৃত্তিকারী বাস্তবায়ন করতে হবে। প্রতিটি উপাদান হয় একটি পূর্ণসংখ্যা, বা একটি তালিকা। সেই তালিকার উপাদানগুলিও পূর্ণসংখ্যা বা অন্যান্য তালিকা হতে পারে। সুতরাং ইনপুট যদি [[1, 1], 2, [1, 1]] এর মত হয়, তাহলে আউটপুট হবে [1, 1, 2, 1, 1]

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • আরম্ভ করার বিভাগে, এটি নেস্টেড তালিকা নেবে, এটি নিম্নরূপ কাজ করবে -

  • খালি তালিকা হিসাবে res সেট করুন, সূচক :=0, কল getVal(nestedList)

  • getVal() nestedIntegers নেবে, এটি −

    হিসেবে কাজ করবে
  • nestedIntegers

    -এ i এর জন্য
    • যদি আমি একটি পূর্ণসংখ্যা হয়, তাহলে res অ্যারেতে i ঢোকান, অন্যথায় getVal(i তালিকা) কল করুন

  • পরবর্তী() পদ্ধতিটি সূচী দ্বারা নির্দেশিত মান প্রদান করবে এবং সূচক 1

    বৃদ্ধি করবে
  • hasNext() সত্য ফিরে আসবে, যখন এর পাশে একটি উপাদান থাকবে, অন্যথায় মিথ্যা

উদাহরণ(পাইথন)

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

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. পাইথনে নেস্টেড তালিকা বোঝা

  2. পাইথন ইটারেটর প্রকার

  3. পাইথনে ইটারেটর ফাংশন

  4. পাইথনে একটি অগভীর তালিকা কীভাবে সমতল করবেন?