2011-12-26 11 views
8

तुम्हें पता है कि flatmap मदों की एक अनुक्रम लेता है और, एक नया परिणाम को में हर एक को धर्मान्तरित सभी subsequences के योग:फ्लैटमैप के कार्यात्मक विपरीत?

[A, B, C] -> [A1, A2, B1, B2, B3, C1] 

वहाँ एक नाम को बदलने के लिए जो विपरीत है है? की तरह कुछ:

[A1, A2, B1, B2, B3, C1] -> [A, B, C] 

विशिष्ट उदाहरण है कि मुझे इस बारे में सोच कर ली गणितीय अभिव्यक्ति का मूल्यांकन कर रहा था:

1 * 2 + 3 * 4 + 5 + 6 * 7 * 8 
-> 2 + 12 + 5 + 6 + 336 
-> 361 

व्यक्तिगत रूप से, 6 * 7 * 8 के मूल्यांकन एक क्लासिक reduce कदम की तरह लगता है, जबकि निर्णय लेने से जो ब्लॉक को कम करने की आवश्यकता होगी takeWhile चरणों को दोहराने की आवश्यकता होगी।

मुझे पता है कि क्लासिक पुनरावृत्ति के तरीके में यह कैसे करना है, सूचकांक का ट्रैक रखना और यह सब कुछ। ज्यादातर मामलों के लिए, मुझे सबसे अधिक पुनरावृत्तियों के पैटर्न के लिए एक अच्छा कार्यात्मक प्रतिस्थापन मिला है। क्या एक ऑपरेशन के लिए कोई नाम है जो यह करता है, या संचालन का एक सरल सेट जिसे इस प्रभाव को बनाने के लिए बनाया जा सकता है?

उत्तर

6

मुझे लगता है कि flatmap के विपरीत groupby है।

$ python3 
>>> from itertools import groupby 
>>> groupby(['A1', 'A2', 'B1', 'B2', 'B3', 'C1'], lambda x: x[0]) 
+0

इसे सही के रूप में चिह्नित किया जाना चाहिए। – Robert

संबंधित मुद्दे