2012-01-08 8 views
5

में ऐसे मानचित्र-जैसे ऑपरेशन को कैसे कार्यान्वित कर सकता हूं मेरे पास एक सूची है और एक मनमानी फ़ंक्शन 4 पैरामीटर ले रहा है, मान लें कि {1, 11, 3, 13, 9, 0, 12, 7} और f[{x,y,z,w}]={x+y, z+w}, मैं जो करना चाहता हूं वह एक नई सूची बनाने के लिए है जिसमें 4 लगातार तत्व मूल सूची नई सूची के घटक के रूप में एक नया मान प्राप्त करने के लिए मूल्यांकन किया जाता है, और मूल्यांकन मूल सूची में हर 2 पदों में किया जाना इस मामले में, है, जिसके परिणामस्वरूप सूची है: यहाँमैं गणित

{{12, 16}, {16, 9}, {9, 19}} 

नोट 4 और 2 बदल सकते हैं। गणित में आसानी से यह कैसे करें? मैं इसे Map जैसे कुछ के रूप में कल्पना करता हूं, लेकिन यह सुनिश्चित नहीं करता कि कैसे संबंधित होना है।

उत्तर

11
f[{x_, y_, z_, w_}] = {x + y, z + w}; 
list = {1, 11, 3, 13, 9, 0, 12, 7}; 
f /@ Partition[list, 4, 2] 
14

वहाँ Map[f, Partition[...]] के लिए एक विकल्प है: Developer`PartitionMap। जो Map[f, Partition[list, n, ...]] की तरह काम करता है। तो, अपने कोड

Needs["Developer`"] 
f[{x_, y_, z_, w_}] = {x + y, z + w}; 
list = {1, 11, 3, 13, 9, 0, 12, 7}; 
PartitionMap[f,list, 4, 2] 

हो Mark's answer के रूप में एक ही परिणाम दे रही हैं।