Wolfram Computation Meets Knowledge

Wolfram言語:
プログラミングの基本

次の言語の注意事項を表示:
すべてのセクション 
  • Wolfram言語について
  • 次の言語の注意事項を表示:
  • Javaの注意事項を表示
  • Pythonの注意事項を表示
  • 注意事項を隠す
使い始めましょう

関数の適用 ビデオバージョン

複数の式に関数を適用したい場合がよくあります:

In[1]:=1
Map[f, {a, b, c, d}]
Out[1]=1

Pythonプログラマー向けの注意事項

Wolfram言語のMapはPythonのmapと同様に動作しますが,Mapは任意の深さの式の木構造にも作用するという点が異なります.


/@(「スラッシュアット」と読みます)はMapの短縮表記です:

In[2]:=2
f /@ {a, b, c, d}
Out[2]=2

Javaプログラマー向けの注意事項

Wolfram言語のMapはJavaのStream.mapメソッドと同様に動作しますが,Mapはどのような式にも適用できるという点が異なります.


以下では純関数を使っています:

In[3]:=3
{#, #} & /@ {a, b, c, d}
Out[3]=3

Applyを使うと,関数が要素全体に適用されます:

In[1]:=1
Apply[f, {a, b, c, d}]
Out[1]=1

Pythonプログラマー向けの注意事項

Wolfram言語のApplyはPythonのアンパック演算子*を使うのと同様です.


式には,部分を抽出するのに必要な指標の数に対応するレベルがあります.Mapのような関数は,特定のレベルに作用させることができます.

Javaプログラマー向けの注意事項

「レベル」とは配列の次元のことですが,記号式すべてに一般化されています.このような多次元演算はJavaには組み込まれておらず,通常ループが必要です.

Pythonプログラマー向けの注意事項

「レベル」とは配列の次元のことですが,記号式すべてに一般化されています.Pythonの配列関数は,通常一次元配列だけに対して設定されています.

Mapはデフォルトではレベル1に作用します:

In[1]:=1
Map[f, {{a, b}, {c, d}}]
Out[1]=1

これはレベル2にのみ作用します:

In[2]:=2
Map[f, {{a, b}, {c, d}}, {2}]
Out[2]=2

@@Applyと等価であり,デフォルトではレベル0に作用します:

In[1]:=1
f @@ {{a, b}, {c, d}}
Out[1]=1

@@@は「レベル1で適用」を意味します:

In[2]:=2
f @@@ {{a, b}, {c, d}}
Out[2]=2

@は通常の関数適用です:

In[3]:=3
f@x
Out[3]=3

評価するとg[{a, b, c}]となるのは,以下のどの式ですか?


評価すると{{f[a], f[b]}, {f[c], f[d]}}になるのは,以下のどれでしょうか?


評価すると{{{f[a], f[b]}}, {{f[c], f[d]}}}になるのは,以下のうちのどれでしょうか?

© 2021 Wolfram. All rights reserved.