深入理解Mathematica編程:[2]循環(huán)_2
在Mathematica編程中,Do函數(shù)是一種常見的循環(huán)函數(shù),對于那些從其他編程語言轉(zhuǎn)向Mathematica的開發(fā)者來說,可能更傾向于使用Do。那么,Do和Table有何區(qū)別呢?最大的不同在于,Do
在Mathematica編程中,Do函數(shù)是一種常見的循環(huán)函數(shù),對于那些從其他編程語言轉(zhuǎn)向Mathematica的開發(fā)者來說,可能更傾向于使用Do。那么,Do和Table有何區(qū)別呢?最大的不同在于,Do僅僅是執(zhí)行表達式n次,當整個Do運算完成后,并不會返回任何結(jié)果。
Do的語法結(jié)構(gòu)
首先讓我們來看一下Do的語法結(jié)構(gòu),你會發(fā)現(xiàn)它與Table非常相似。雖然Do執(zhí)行后并沒有任何結(jié)果返回,但這正是與Table的區(qū)別所在。
用Table和Do執(zhí)行同一語句的對比
讓我們拿出一條相同的語句,分別使用Table和Do來執(zhí)行。通過觀察可以發(fā)現(xiàn),使用Do執(zhí)行后并沒有任何結(jié)果返回,這與前文提到的兩者區(qū)別是一致的。
Do循環(huán)命令的必要性
也許你會對為什么需要Do循環(huán)命令感到困惑。實際上,在某些情況下,我們并不關(guān)心返回的結(jié)果,只需執(zhí)行循環(huán)操作。例如,如下所示的代碼段,我們僅對每個文件執(zhí)行生成縮略圖的操作,而無需得到所有縮略圖的結(jié)果。
數(shù)據(jù)收集方法
另一方面,如果我們只對循環(huán)過程中計算的某些結(jié)果感興趣,也是可以進行數(shù)據(jù)收集的。舉個例子,我們只收集100以內(nèi)的素數(shù)。
高效收集中間數(shù)據(jù)的方法
現(xiàn)在讓我們看一個更高效的收集中間數(shù)據(jù)的例子。這里將介紹使用Sow和Reap進行數(shù)據(jù)收集的方式。通過這種方式,我們可以更靈活地獲取我們感興趣的中間結(jié)果,提高程序的效率。