1
數學有一個函數MapThread
,其行爲是這樣的:如何使用基本列表映射實現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
或者是低效率的情況下,可能是最好的我能與這樣一個原始的語言呢?
您可以在這些列表上做相當於First []和Rest []的操作,並測試它們的長度是否爲零?在那種情況下,它並不那麼難;否則你的N^2技巧可能是最好的解決方案,而無需將自己的宏一起移動來操作列表。是的,第一個[]和第[]個可能是[ – Pillsy 2009-10-14 19:14:30
]。啊,我想我明白你要去哪裏了。 – 2009-10-15 01:42:16