यह एक क्लासिक चाल है:
list = {{1, 7, 8}, {4, 3}, {4, 1, 9}, {9, 2}}
Module[{f},
f[x_] := (f[x] = Sequence[]; x);
Map[f, list, {2}]
]
को समझने के लिए कि यह कैसे काम करता है, पर विचार जब f[1]
पहली बार के लिए मूल्यांकन किया जाता है क्या होता है। f[1]
सिर्फ 1
तो, (f[1]=Sequence[]); 1
करने का मूल्यांकन करेंगे। तो अब f[1]
के लिए एक परिभाषा बनाई गई है। अगली बार f[1]
का मूल्यांकन किया गया है, यह केवल Sequence[]
का मूल्यांकन करेगा।
तो, पहली बार f
एक बहस के लिए मूल्यांकन किया जाता है, यह उस तर्क देता है। दूसरा (या तीसरा, आदि) समय का मूल्यांकन किया जाता है, यह Sequence[]
देता है। Sequence[]
गुण है कि यह पूरी तरह से भाव से बाहर छीन हो जाएगी, अर्थात {1, Sequence[], 3}
{1, 3}
करने का मूल्यांकन करेंगे है।
संक्षेप में, क्या समारोह करता है: पहली बार यह एक तत्व को देखता है, यह अपने आप के साथ तत्व (इसे अकेले छोड़ देता है) बदल देता है। दूसरी बार यह एक ही तत्व को देखता है, यह इसे हटा देता है। मैंने इस समारोह को "level 2" पर मैप किया है, इसलिए यह केवल उपन्यासकारों के तत्वों पर ही कार्य करेगा।
स्टैक एक्सचेंज में आपका स्वागत है। अच्छा पहला सवाल है। आप गणित (बीटा) साइट के बारे में भी जानना चाहेंगे: http://mathematica.stackexchange.com/ – DavidC