Wolfram Researchは、少なくとも過去8年間、この機能について同じドキュメントを持っています。
Thread[f[args]]
argsに表示されるリストの「スレッド」f。
私が今まで見たことがあれば、素敵な循環定義。
誰かが実際のセマンティクスが何であるかを知っていて、非循環的である適切な説明を提供することができますか?
Wolfram Researchは、少なくとも過去8年間、この機能について同じドキュメントを持っています。
Thread[f[args]]
argsに表示されるリストの「スレッド」f。
私が今まで見たことがあれば、素敵な循環定義。
誰かが実際のセマンティクスが何であるかを知っていて、非循環的である適切な説明を提供することができますか?
Pythonのzip()
関数と同様に機能しますが、少し一般的な方法で動作します。例えば:
In[1] := Thread[{{1, 2, 3}, {4, 5, 6}}] (* f == List *)
Out[1] = {{1, 4}, {2, 5}, {3, 6}}
In[2] := Thread[f[{1, 2, 3}, {4, 5, 6}]]
Out[2] = {f[1, 4], f[2, 5], f[3, 6]}
In[3] := Thread[f[a+b+c, d+e+f], Plus]
Out[3] = f[a, d] + f[b, e] + f[c, f]
zip
スレッドは、他の関数型言語からの一般化に少し似ています。
例のargsのすべての要素がリストである単純なケースでは、
Thread[f[args]]
と同等です
f @@@ Transpose[{args}]
ドキュメントの最初のいくつかの例に示されているように。主な問題は、リストではない引数がある場合です。この場合、それらは効果的に実行されます。例えば、
Thread[g[{a, b}, c, {d, e}, f]]
と同等です
g[#1, c, #2, f]& @@@ Transpose[{{a, b}, {d, e}}]
私は通常、スレッドを使用してルールのリストまたは方程式のリストを作成しています。