Mathematica 有一个MapThread
行为如下的函数:
MapThread[ f , { {a,b,c} , {d,e,f} } ]
-> { f[a,d] , f[b,e] , f[c,f] }
我想在 TeX 中实现它,它具有非常原始的编程工具。我有用于迭代列表的基本设施,但没有对它们进行逻辑索引。鉴于此限制,是否有一种通过多个列表同步循环的算法?
我可以写如下内容:(伪代码)
ii = 0; jj = 0;
for elem1 in list1
ii = ii+1
for elem2 in list2
jj = jj+1
if ii == jj
return ( elem1 , elem2 )
fi
end
end
但它似乎非常低效。请注意,最大的限制是我不能以数字方式访问列表的元素,所以像下面这样的东西太“高级”了:
for ii = 1:length(list1)
func ( list1(ii) , list2(ii) )
end
存在此限制的原因是,为了实现,list1(ii)
我首先需要编写如下内容:
jj = 0
for elem1 in list1
jj = jj+1
if ii=jj
return elem1
fi
end
或者,这种低效的情况可能是我用这种原始语言所能做的最好的事情吗?