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

पायथन में एक सरणी को शफल करें

मान लीजिए कि हमारे पास एक सरणी ए है, हमें डुप्लिकेट के बिना संख्याओं के एक सेट को फेरबदल करना होगा। इसलिए यदि इनपुट [1,2,3] जैसा है, तो फेरबदल के लिए, यह [1,3,2] होगा, रीसेट करने के बाद, यदि हम फिर से फेरबदल करते हैं, तो यह [2,3,1]

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

  • अलग-अलग तरीके होंगे। ये हैं init (), रीसेट (), फेरबदल ()। ये नीचे की तरह काम करेंगे -

  • init जैसा होगा -

  • मूल :=दिए गए सरणी की एक प्रति

  • अस्थायी:=अंक

  • सूचकांक :=0 से लेकर अंकों की लंबाई तक की संख्याओं की सूची - 1

  • रीसेट () मूल सरणी लौटाएगा

  • फेरबदल () इस तरह होगा -

  • यदि अस्थायी की लंबाई 0 है, तो खाली सरणी लौटाएं

  • i :=इंडेक्स ऐरे से बेतरतीब ढंग से एक इंडेक्स का चुनाव करें, j :=इंडेक्स ऐरे से दूसरे इंडेक्स को रैंडमली चुनें

  • इंडेक्स i और j में मौजूद तत्वों को स्वैप करें

  • वापसी अस्थायी

  • एक अन्य विधि जिसे getAllPermutation() कहा जाता है, अंक लेगा, i, प्रारंभ में i =0, जैसा होगा -

  • वर्तमान:=मैं

  • अगर मैं =अंकों की लंबाई, तो

    • nums array की एक कॉपी को एक अन्य एरे में डालें जिसे all कहा जाता है

    • वापसी

  • j के लिए :=curr to length of nums

    • इंडेक्स j पर तत्वों की अदला-बदली करें और अंकों से कर्व करें

    • कॉल getAllPermutation(nums, curr + 1)

    • इंडेक्स j पर तत्वों की अदला-बदली करें और अंकों से कर्व करें

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

उदाहरण

import random
class Solution(object):
   def __init__(self, nums):
      self.original = [x for x in nums]
      self.temp = nums
      self.indices = [x for x in range(len(nums))]
   def reset(self):
      return self.original
   def shuffle(self):
      if not len(self.temp):
         return []
      i = random.choice(self.indices)
      j = random.choice(self.indices)
      self.temp[i], self.temp[j] = self.temp[j], self.temp[i]
      return self.temp
ob = Solution([1,2,3])
print(ob.shuffle())
print(ob.reset())
print(ob.shuffle())

इनपुट

Initialize with [1,2,3] , then call shuffle(), reset() and shuffle()
को कॉल करें

आउटपुट

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

  1. पायथन में विरासत

    इस लेख में, हम पायथन 3.x में इनहेरिटेंस और एक्सटेंडिंग क्लासेस सीखेंगे। या पहले। वंशानुक्रम वास्तविक दुनिया के संबंधों का अच्छी तरह से प्रतिनिधित्व करता है, पुन:प्रयोज्य प्रदान करता है और पारगमन का समर्थन करता है। यह तेजी से विकास समय, आसान रखरखाव और विस्तार में आसान प्रदान करता है। वंशानुक्रम को

  1. पायथन में डायनेमिक ऐरे का कार्यान्वयन

    डायनामिक ऐरे पायथन में, एक सूची, सेट और शब्दकोश परिवर्तनीय वस्तुएं हैं। जबकि संख्या, स्ट्रिंग और टपल अपरिवर्तनीय वस्तुएं हैं। म्यूटेबल ऑब्जेक्ट्स का मतलब है कि हम सूची, सेट या डिक्शनरी से आइटम जोड़ते/हटाते हैं, हालांकि अपरिवर्तनीय वस्तुओं जैसे टपल या स्ट्रिंग्स के मामले में यह सच नहीं है। पायथन मे

  1. पायथन में ठोस अपवाद

    पायथन में कुछ सामान्य अपवाद हैं। ये अपवाद आमतौर पर विभिन्न कार्यक्रमों में उठाए जाते हैं। ये प्रोग्रामर द्वारा स्पष्ट रूप से उठा सकते हैं, या पायथन दुभाषिया इस प्रकार के अपवादों को स्पष्ट रूप से उठा सकता है। इनमें से कुछ अपवाद हैं - अपवाद अभिकथन त्रुटि जब कोई मुखर कथन विफल हो जाता है, तो Assertion