シンボル
に割り当てることができる属性で,関数
がその引数として与えられるリストに対して自動的に縫い込まれることを表す.
Listable
シンボル
に割り当てることができる属性で,関数
がその引数として与えられるリストに対して自動的に縫い込まれることを表す.
例題
すべて開く すべて閉じる例 (4)
Listableな関数はリストの引数に縫い込まれる:
Attributes[f] = {Listable};
f[{1, 2, 3}]Logはリスト可能である:
Log[{a, b, c}]Attributes[Log]{a, b, c} + {x, y, z}{a, b, c} + x{{a, b}, {c, d}} + xスコープ (4)
f[x_] := If[x > 0, Sqrt[x], Sqrt[-x]];
SetAttributes[f, Listable];f[{3, 0, -2}]Attributes[Power]{a, b, c} ^ {1, 2, 3}{a, b, c} ^ 5リスト可能特性は任意のネストの深さを持つリストに使うことができる:
Sqrt[{{1, 2}, {3, 4}}]{{a, b}, {c, d}} ^ {2, 3}リスト可能特性はSparseArrayのような他のリスト様の構造に作用する:
SetAttributes[f, Listable]f[SparseArray[{1 -> E, 5 -> Pi}]]f[Association[1 -> 1, 5 -> 5]]アプリケーション (2)
関数をベクトルに適用する場合は,可能であればListable関数を利用する:
v = RandomReal[1, 10 ^ 6];Plus,Power,Sin,Timesのリスト可能特性を使う:
Timing[fvl = Sin[2 Pi (v - .5) ^ 2];]Mapを使う:
Timing[fvm = Map[Sin[2 Pi (# - .5) ^ 2]&, v];]Tableを使う:
Timing[fvt = Table[Sin[2 Pi (x - .5) ^ 2], {x, v}];]TableとPartを使って低次元言語で行われるであろう方法でvの要素にアクセスする:
Timing[fvp = Table[Sin[2 Pi(v[[i]] - .5) ^ 2], {i, Length[v]}];]{Norm[fvl - fvm], Norm[fvl - fvt], Norm[fvl - fvp]}n = 1000;
x = N[Range[0, n] / n];d2 = n ^ 2SparseArray[{{i_, i_} -> -2., {i_, j_} /; Abs[i - j] == 1 -> 1.}, {n + 1, n + 1}, 0.]ディリクレ(Dirichlet)の境界条件を組込んでヤコビアンJを作る:
j = d2;
j[[1, {1, 2}]] = 0.;
j[[-1, {-1, -2}]] = 0.;
j = SparseArray[j]id = IdentityMatrix[n + 1, SparseArray]m = id - 0.001 jlu = LinearSolve[m]UnitStepのリスト可能特性を使った空間格子xにおけるステップの初期条件:
init = UnitStep[x - .5];
ListPlot[init, DataRange -> {0, 1}]sol = init;
Do[sol = lu[sol], {10}]ListPlot[sol, DataRange -> {0, 1}]特性と関係 (7)
一般に,リスト可能な関数は,事実上,Threadを何回も適用する:
SetAttributes[f, Listable];f[{1, 2, 3}]g[{1, 2, 3}]Thread[g[{1, 2, 3}]]次元が等しい複数の配列にリスト可能な関数を適用することはMapThreadを使うことに等しい:
SetAttributes[f, Listable];{a, b} = {Array[x, {2, 2}], Array[y, {2, 2}]};f[a, b] == MapThread[f, {a, b}, 2]複数の配列に適用されるリスト可能な関数は,重複次元が等しくなければならない:
SetAttributes[f, Listable];f[Array[x, {2}], Array[y, {2}]]//Dimensions重複次元が等しい.つまり,{2}は{2,3}と同じ先行次元である:
f[Array[x, {2}], Array[y, {2, 3}]]//Dimensions重複次元は等しくない.つまり,{2}は{3,2}と同じ先行次元ではない:
f[Array[x, {2}], Array[y, {3, 2}]];配列に適用猿リスト可能な関数はTableとして書くことができる:
SetAttributes[f, Listable];a1 = Array[x, {5}];
a2 = Array[y, {5, 7}];
a3 = Array[z, {5}];f[a1, a2, a3] == Table[f[a1[[i1]], a2[[i1, i2]], a3[[i1]]], {i1, 5}, {i2, 7}]リスト可能な操作について実装されている関数にはListable属性が必要ではないことがある:
g[x_] := x ^ 2g[{1, 2, 3}]Attributes[Power]Listable属性を持つシステムシンボル:
listable = Entity["WolframLanguageSymbol", "Listable"]["SymbolsUsingAsAttribute"];
Short[listable, .5]これらの半分以上は,属性NumericFunctionも有する算術関数である:
{Length[listable], Length[EntityList[EntityClass["WolframLanguageSymbol", "Attributes" -> ContainsAll[{"Listable", "NumericFunction"}]]]]}Dot,Times,KroneckerProductで与えられる積は内積,要素単位の積,外積である:
u = {a, b, c, d};
v = {1, 2, 3, 4};u.vu vKroneckerProduct[u, v] // MatrixFormテクニカルノート
関連するガイド
-
▪
- 属性 ▪
- リストへの数学的およびカウント操作 ▪
- 関数のリストへの適用 ▪
- 変数と関数の定義
関連するワークフロー
- 並列計算を実行する
履歴
1988 で導入 (1.0)
テキスト
Wolfram Research (1988), Listable, Wolfram言語関数, https://reference.wolfram.com/language/ref/Listable.html.
CMS
Wolfram Language. 1988. "Listable." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Listable.html.
APA
Wolfram Language. (1988). Listable. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Listable.html
BibTeX
@misc{reference.wolfram_2026_listable, author="Wolfram Research", title="{Listable}", year="1988", howpublished="\url{https://reference.wolfram.com/language/ref/Listable.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_listable, organization={Wolfram Research}, title={Listable}, year={1988}, url={https://reference.wolfram.com/language/ref/Listable.html}, note=[Accessed: 03-November-2026]}