recursion - I can't understand the "yield" with recursive function in Python -


मैं "उपज" को समझने की कोशिश कर रहा हूं।

  def permutations (seq): अगर लेन (seq) & lt; = 1: उपज seq अन्य:  

के लिए permutations में perm (seq [1:]): श्रेणी के लिए मैं (लेन (perm) +1): उपज perm [i:] + seq [0: 1] + perm [: i] प्रिंट सूची (क्रमबद्धता ([ 'पुलिस', 'भैंस', 'मछली']))

इसका परिणाम नीचे दिया गया है:

  [['मछली', 'भैंस' , 'पुलिस', '' भैंस '', 'पुलिस', 'मछली'], ['पुलिस', 'मछली', 'भैंस'], ['भैंस', 'मछली', 'पुलिस'], [' "उपज" के बारे में मेरे व्यवहार का स्तर सिर्फ इसका इस्तेमाल इसके लिए किया जाता है। generater। और मैं नीचे दिए गए कोड को समझ सकता हूँ। रिवर्स ('गोल्फ') में चारों के लिए उपज डेटा [इंडेक्स]:  
  def रिवर्स (डेटा): इंडेक्स रेंज में (लेन (डेटा) -1, -1, -1): प्रिंट (चार) फ्लॉग  

मेरा स्तर बस ऊपर समझ है .. लेकिन recursion के साथ, मैं समझ नहीं सकता ... कृपया समझाओ धन्यवाद

हाँ, उपज जनरेटर के लिए है इसका अर्थ है कि जब फोन किया जाता है, वे फिर से दोहराते हैं। जेनरेटर रिकर्सिव हो सकते हैं: वे खुद को कॉल करेंगे, एक इटरेटर प्राप्त करेंगे और फिर से पुनरावृत्त हो जाएंगे, प्रत्येक इरेरेशन पर वे अपने तत्वों के जितने या कुछ कम पसंद कर सकते हैं।

अपने उदाहरण में क्रमपरिवर्तन एक जनरेटर है, जो हमेशा सूची पर एक इरेरेटर देता है।

  यदि len (seq) & lt; = 1: उपज seq  

काफी सरल है: तुच्छ मामले में, बस एक सूची, seq ही उत्पन्न करें। Permutations (seq [1:]) में perm के लिए

 : ... < / कोड>  

मतलब "अब अलग-अलग अनुक्रम-सूची पर पुनरावृत्त करें", इस मामले में पहले के तत्वों के सभी क्रमपरिवर्तनों का अनुक्रम है प्रत्येक पुनरावृत्ति में हमारे पास नेस्टेड लूप है जो क्रमांतरण की प्रत्येक स्थिति में पहला तत्व सम्मिलित करता है और परिणाम उत्पन्न करता है।

मुझे आशा है कि इससे मदद मिलेगी यह मेरे लिए थोड़ा मुश्किल है क्योंकि मुझे नहीं पता कि आप किस बारे में भ्रमित हैं।

अपडेट: ओपी जानना चाहता है कि पहले क्यों परिणाम रिवर्स ऑर्डर में है। रेखा पर विचार करें:

  उपज perm [i:] + seq [0: 1] + perm [: i]  

पहला परिणाम (I = 0) यह उपज परमिट + सेक्र [[0: 1] के बराबर है - पहला तत्व अंत के लिए भेजा जाता है सूची। प्रेरण करके, यह परिणाम seq के पीछे है यदि आप चाहते हैं कि पहला परिणाम ['पुलिस', 'भैंस', 'मछली'] हो तो आप यह कर सकते हैं:

  उपज perm [: i] + Seq [0: 1] + perm [i:]  

Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

c# - MySQL Parameterized Select Query joining tables issue -