मैं प्रत्येक पेड़ से सभी पेड़ों को एक पेड़ में रूट करना चाहता हूं। मैं जनरेटर के साथ ऐसा करना चाहता हूं, स्मृति को बचाने के लिए (पेड़ बड़ा हो सकता है)। यहां मेरा कोड है:पायथन (उपज): पत्तियों से रूट के सभी पथ एक पेड़ में रूट
def paths(self, acc=[]):
if self.is_leaf():
yield [self.node]+acc
for child in self.children:
child.paths([self.node]+acc)
लेकिन यह काम नहीं करता है। क्यूं कर? जड़ पर बुलाया गया, यह पेड़ को "एसीसी" में नोड एकत्रित करने से ऊपर से नीचे तक पेड़ को पार करता है। "एसी" प्रत्येक पत्ते में वापस किया जाना चाहिए ...
is_leaf() सच है अगर self.children खाली है।
मैंने हमेशा सोचा है - क्या कोई त्वरित "उपज सब कुछ" कमांड है, या आपके द्वारा लिखे गए 'लूप' के लिए सबसे छोटा है? – Owen
@ ओन नोप, लेकिन मुझे यह ठीक लगता है, यह केवल दो सरल रेखाएं हैं ... –
पायथन 3.3 में 'उपज से' उपज होगी जो स्वचालित रूप से अन्य जनरेटर से आइटम उत्पन्न करेगी, इसलिए कोई भी 'लूप' इसमें 'उपज' के साथ आप एक जनरेटर अभिव्यक्ति के रूप में लिख सकते हैं एक पंक्ति में बनाया जा सकता है। – agf