如何在mathematica中实现类似地图的操作

时间:2012-01-08 01:28:44

标签: wolfram-mathematica

我有一个列表和一个带有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可以改变。如何在Mathematica中方便地做到这一点?我想这就像Map,但不知道如何联系。

2 个答案:

答案 0 :(得分: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相同的结果。

答案 1 :(得分:11)

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