{e1,e2,…}
是一个元素列表.
List 
{e1,e2,…}
是一个元素列表.
更多信息
- 列表是代表表达式集合的非常一般的对象.
- 有属性 Listable 的函数自动线性作用于列表,使得它们分别对每个列表元素作用. 大多数内置数学函数都是Listable.
- {a,b,c} 表示一个向量.
- {{a,b},{c,d}} 表示一个矩阵.
- 嵌套列表可用于表示张量.
- 如果 Nothing 出现在列表中,将被自动移除.
- Parallelize[{e1,e2,…}] 计算并行元素 e1, e2, …. »
背景
- List 是非常一般的用于表示一组表达式的结构,即列表. 列表可以有任意的长度或深度. 表达式 List[a,b,c,…] 通常都用简化语法 {a,b,c,…} 的形式输入和显示. 列表在 Wolfram 语言中特别重要,因为该语言并没有显式定义向量、矩阵、张量等对象而是用(可能嵌套的)列表来表示这些结构. 例如,{a,b,c,…} 可以表示一个向量,{{a,b},{c,d}} 可以表示一个矩阵,等等.
- 带 Listable 属性的函数会自动逐项作用于列表,也就是说它们会分别作用在每个列表元素上. 大多数内建的数学函数都是带有 Listable 属性的.
- Apply 会把 List(或任意其它表达式)的头部换成新的,而 Map 会把函数应用到 List(或任意其它表达式)第一层的每个元素上.
- SparseArray 可被用于有效的表示和计算具有常数(常常是 0)“背景”值的列表(或嵌套列表). SparseArray 可用 Normal 扩展成全尺寸的 List.
- 列表中的值可以用 Set 有效的作保持位置的修改,即 list[[k]]=newValue. 访问、插入或删除列表中元素的常见操作包括 Part、Take、Drop、Extract、Insert、Delete、PadLeft/PadRight、Append/AppendTo 和 Prepend/PrependTo.
- 值的扁平列表(即一个向量)可以用 ListPlot 绘制,而用矩形的列表之列表形式给出的值的阵列可以用 ArrayPlot、MatrixPlot、ListDensityPlot,或相关函数绘制. 其它常被应用于列表的重要且有用的函数包括 Total、Accumulate、Mean 和 ListConvolve.
- Association 提供了符号化索引列表、关联阵列、词典、哈希表、结构体、以及各种强大的数据结构的推广,称为关联. 如此命名 Association 是因为它把键和值关联了起来,从而可以进行高效的查找及修改,即使在它有百万量级的元素的情况下也是如此.
- 列表可以用 Sequence 转换成一串表达式. 这可能特别有用,因为在 Wolfram 语言中函数通常是有一串参数而不是一个参数的列表,所以使用 Sequence 可以让其它函数也能方便的使用列表形式的数据.
范例
打开所有单元 关闭所有单元基本范例 (1)
范围 (31)
向量、矩阵和其它数组的表示 (4)
v = {1, 2.3, x + 4};VectorQ[v]v.vm = {{1, 2, 3}, {1, 4, 9}};MatrixQ[m]许多运算适用于矩阵,如 Dot、Transpose 和 Det:
m.Transpose[m]Det[Transpose[m].m]ra = {{{1, 2, 3}, {4, 5, 6}}, {{7, 8, 9}, {10, 11, 12}}, {{13, 14, 15}, {16, 17, 18}}, {{19, 20, 21}, {22, 23, 24}}};ArrayQ[ra]许多操作适用于任意深度的数组,如 Dot 和 Fourier:
ra.{1, 2, 3}Fourier[ra]ragged = {{1, 2, 3}, {4, 5}, {6}};ragged[[All, 1]]Map[Total, ragged]如果元素在相同的深度,你可以用 PadRight 制作一个矩形数组:
PadRight[ragged]构造列表 (5)
Range 构造包含一系列值的列表:
Range[4]Range[4, -4, -2]Range[0., 1., .1]Array 用函数构造列表:
Array[f, 4]Array[2 ^ #&, 4]h[i_, j_] := 1 / (i + j - 1);
Array[h, {4, 3}]Table 用一个表达式或一个迭代运算来构建列表:
Table[f[i], {i, 4}]Table[2 ^ i, {i, -4, 4}]h[i_, j_] := 1 / (i + j - 1);Table[h[i, j], {i, 4}, {j, 3}]Table[h[i, j], {i, 4}, {j, i}]类似 NestList 的函数命令创建结果列表:
NestList[3#(1 - #)&, .1, 20]ListPlot[%, Filling -> Axis]在长度预先未知的情况下构建列表,用 Sow 和 Reap 有效:
rolls := Module[{prev = 0, next, r6 = Range[6]}, Reap[
While[(next = RandomChoice[r6]) ≠ prev,
Sow[next];prev = next]][[2, 1]]]rollsrollsrolls可列表函数 (4)
{1, 2, 3} + {a, b, c}2 * {1, 2, 3}Sin[2 Pi Range[0., 1., 1 / 13]]a * {{1, 2}, {3, 4}}{{1, 2}, {3, 4}} + {a, b}Exp[{{1., 2., 3.}, {4., 5., 6.}}]任何有属性 Listable 的函数按元素线性作用于列表:
SetAttributes[f, Listable]f[{1, 2, 3, 4}]使用 Threaded 改变可列表函数组合参数的方式:
{{1, 2}, {3, 4}} + {a, b}{{1, 2}, {3, 4}} + Threaded[{a, b}]列表元素上的运算 (5)
Apply 将列表元素作为函数的参数:
Apply[f, {1, 2, 3}]Apply[f, {{1, 2}, {3, 4}, {5, 6}}, {1}]Map 将一个函数应用到列表元素中:
Map[f, {1, 2, 3, 4}]对于嵌套列表,Map 可以将 f 用到任意层或多个层上:
Map[f, {{1, 2}, {3, 4}, {5, 6}}, {2}]Map[f, {{1, 2}, {3, 4}, {5, 6}}, 2]Do、Product、Sum 和 Table 可以在列表上迭代:
list = {1, 2, 4, 8};Do[Print[{i, Log[2, i]}], {i, list}]Table[Log[2, i], {i, list}]Sum[k, {k, list}]Part 可以用于获得列表元素:
list = {1, 2, 4, 8};list[[3]]list[[{1, -1}]]或者用 Span:
list[[1 ;; -1 ;; 2]]用 Outer 将函数应用到多重列表的元素中:
Outer[f, {1, 2}, {a, b, c}]合并列表 (4)
使用 Join 将两个列表首尾相连:
Join[{a, b, c}, {1, 2, 3}]使用 Splice 将一个列表的元素作为另一个列表的单独元素插入:
{a, b, Splice[{x, y}], d}组合使用 Sequence 和 Apply 可以达到相同的效果:
{a, b, Sequence@@{x, y}, d}与 Sequence 不同,Splice[list] 在其他函数内部是惰性的:
f[a, b, Splice[{x, y}], d]使用 Insert 将整个列表作为单个元素放入另一个列表中:
Insert[{1, 2, 3}, {a, b, c}, 2]Append 行为类似:
Append[{1, 2, 3}, {a, b, c}]与 Prepend 一样:
Prepend[{1, 2, 3}, {a, b, c}]使用 Flatten 删除内部列表:
Flatten[{{1, 2}, {a, b, c}}]有限集列表 (2)
Complement、Union 和 Intersection 将 List 视为集合:
s1 = {a, b, c};
s2 = {c, d, e};Complement[s1, s2]Union[s1, s2]Intersection[s1, s2]用 Subsets、Tuples 和 IntegerPartitions 构建不同组合的结构:
Subsets[{1, 2, 3}]Tuples[{{0, 1}, {a, b}}]IntegerPartitions[5]控制结构列表 (2)
许多命令用 {var, vmin, vmax} 指定变量的范围:
Integrate[Sin[x], {x, 0, Pi / 2}]NDSolve[{x'[t] == x[t], x[0] == 1}, x, {t, 0, 1}]Table[var ^ 2, {var, -1, 3}]Solve[{x + y + z == 0, x + y == 1, y + z == 2}, {x, y, z}]DSolve[{x'[t] == y[t], y'[t] == -x[t]}, {x, y}, t]规则列表 (2)
r = FindRoot[{Cos[x ^ 2 + y], (x - 2 y)}, {{x, 1}, {y, 2}}]您可以用 ReplaceAll 获得结果的值:
{x, y} /. r{Cos[x ^ 2 + y], (x - 2 y)} /. rs2 = Solve[{x ^ 2 + y ^ 2 == 1, x + y == 0}, {x, y}]当在 ReplaceAll 中使用规则列表,您可以获得结果列表:
{x, y} /. s2x ^ 2 + y ^ 2 == 1 && x + y == 0 /. s2甚至在只有一个解时,额外 List 用于相同结构:
Solve[{x - y == 1, x + y == 0}, {x, y}]数据列表 (3)
data = {{"George", "Washington", 1789, False}, {"John", "Adams", 1797, True}, {"Thomas", "Jefferson", 1801, True}};ssq = N[Sin[Range[10] ^ 2]]ListPlot[ssq]f[x_, y_] := Sin[2 Pi x y];
Short[data = Flatten[Table[{{x, y}, f[x, y]}, {x, 0., 1., .1}, {y, 0., 1., .1}], 1]]ifun = Interpolation[data]Plot3D[ifun[x, y], {x, 0, 1}, {y, 0, 1}]ListPlot3D[Map[Flatten, data]]属性和关系 (6)
与所有 Wolfram 语言表达式一样,列表是 1 索引的:
list = {a, b, c, d, e};Delete[list, 1]list[[3]]在大多数格式类型(包括 InputForm)中,列表显示为 {…}:
InputForm[{a, b, c}]FullForm 像任何其他表达式一样对待列表,将它们显示为 List[…]:
FullForm[{a, b, c}]这清楚地表明列表有标头 List:
Head[{a, b, c}]Sequence 自动拼接成列表:
{a, b, Sequence[x, y], d}这是 Sequence 一般行为的一个特例:
f[a, b, Sequence[x, y], d]Nothing 会自动从列表中删除:
{a, b, Nothing, d}f[a, b, Nothing, d]一个 SparseArray 表示一个列表:
list = {1, 0, 1, 0, 0, 1, 0, 0, 0, 1};slist = SparseArray[list]它们是 Equal 的:
slist == listslist + 3 == list + 3Sin[N[slist]] == Sin[N[list]]slist === listNormal[slist]% === listParallelize[list] 并行计算 list 的元素:
Parallelize[{EchoEvaluation[0 + 1], EchoEvaluation[Pause[.1];Sqrt[4]], EchoEvaluation[6 / 2]}]技术笔记
-
▪
- 产生对象列表 ▪
- 标量、向量和矩阵的运算
相关指南
-
▪
- 列表操作 ▪
- 计算结构化数据集 ▪
- WDF(Wolfram 数据框架) ▪
- 自动生成的报告 ▪
- 表达式 ▪
- 语言概述 ▪
- Wolfram 语言语法 ▪
- 数据库连接
历史
1988年引入 (1.0) | 在以下年份被更新:2014 (10.0)
文本
Wolfram Research (1988),List,Wolfram 语言函数,https://reference.wolfram.com/language/ref/List.html (更新于 2014 年).
CMS
Wolfram 语言. 1988. "List." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2014. https://reference.wolfram.com/language/ref/List.html.
APA
Wolfram 语言. (1988). List. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/List.html 年
BibTeX
@misc{reference.wolfram_2026_list, author="Wolfram Research", title="{List}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/List.html}", note=[Accessed: 12-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_list, organization={Wolfram Research}, title={List}, year={2014}, url={https://reference.wolfram.com/language/ref/List.html}, note=[Accessed: 12-September-2026]}