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. 访问、插入或删除列表中元素的常见操作包括 PartTakeDropExtractInsertDeletePadLeft/PadRightAppend/AppendToPrepend/PrependTo.
  • 值的扁平列表(即一个向量)可以用 ListPlot 绘制,而用矩形的列表之列表形式给出的值的阵列可以用 ArrayPlotMatrixPlotListDensityPlot,或相关函数绘制. 其它常被应用于列表的重要且有用的函数包括 TotalAccumulateMeanListConvolve.
  • Association 提供了符号化索引列表、关联阵列、词典、哈希表、结构体、以及各种强大的数据结构的推广,称为关联. 如此命名 Association 是因为它把键和值关联了起来,从而可以进行高效的查找及修改,即使在它有百万量级的元素的情况下也是如此.
  • 列表可以用 Sequence 转换成一串表达式. 这可能特别有用,因为在 Wolfram 语言中函数通常是有一串参数而不是一个参数的列表,所以使用 Sequence 可以让其它函数也能方便的使用列表形式的数据.

范例

打开所有单元关闭所有单元

基本范例  (1)

缩写符号 {}FullForm 符号 List[] 是等价的:

范围  (31)

向量、矩阵和其它数组的表示  (4)

一个向量是非列表元素的列表:

许多运算适用于向量,如 DotNorm

一个矩阵是等长度的向量组成的列表:

许多运算适用于矩阵,如 DotTransposeDet

一个矩形数组可以用相同维数的嵌套列表表示:

许多操作适用于任意深度的数组,如 DotFourier

三维离散傅立叶变换:

非矩形的不规则数组也可以使用:

许多结构函数适用于不规则数组:

如果元素在相同的深度,你可以用 PadRight 制作一个矩形数组:

构造列表  (5)

Range 构造包含一系列值的列表:

Array 用函数构造列表:

当给出多重维数,可构建矩阵或更深数组:

Table 用一个表达式或一个迭代运算来构建列表:

当给出多重迭代时,可构建矩阵或数组:

类似 NestList 的函数命令创建结果列表:

在长度预先未知的情况下构建列表,用 SowReap 有效:

尝试滚动骰子,直到一行内相同的数字出现两次:

可列表函数  (4)

增加两个向量:

标量倍数:

向量的正弦:

矩阵的标量倍数:

矩阵加上一个向量,结果增加矩阵行向量的分量:

函数按元素作用于一个矩阵:

任何有属性 Listable 的函数按元素线性作用于列表:

使用 Threaded 改变可列表函数组合参数的方式:

列表元素上的运算  (5)

Apply 将列表元素作为函数的参数:

如果有一个嵌套列表,在第1层的应用给出作用在子列表的 f

Map 将一个函数应用到列表元素中:

对于嵌套列表,Map 可以将 f 用到任意层或多个层上:

DoProductSumTable 可以在列表上迭代:

Part 可以用于获得列表元素:

您可以通过指定部分的列表,获得多个分量:

或者用 Span

Outer 将函数应用到多重列表的元素中:

合并列表  (4)

使用 Join 将两个列表首尾相连:

使用 Splice 将一个列表的元素作为另一个列表的单独元素插入:

组合使用 SequenceApply 可以达到相同的效果:

Sequence 不同,Splice[list] 在其他函数内部是惰性的:

使用 Insert 将整个列表作为单个元素放入另一个列表中:

Append 行为类似:

Prepend 一样:

使用 Flatten 删除内部列表:

有限集列表  (2)

ComplementUnionIntersectionList 视为集合:

SubsetsTuplesIntegerPartitions 构建不同组合的结构:

控制结构列表  (2)

许多命令用 {var, vmin, vmax} 指定变量的范围:

许多命令用 {v1,v2,} 指定变量的集合:

规则列表  (2)

在许多求解命令中,将规则列表作为解返回:

您可以用 ReplaceAll 获得结果的值:

在有多重解集下,结果是规则列表:

当在 ReplaceAll 中使用规则列表,您可以获得结果列表:

甚至在只有一个解时,额外 List 用于相同结构:

数据列表  (3)

因为元素可以是任意类型,所以列表可以很好的保存数据:

逐项平方的正弦:

绘制数据:

在二维空间内取样的函数数据:

数据插值的一个分段多项式:

绘制 InterpolatingFunction

直接绘制数据:

属性和关系  (6)

与所有 Wolfram 语言表达式一样,列表是 1 索引的:

在大多数格式类型(包括 InputForm)中,列表显示为 {}

FullForm 像任何其他表达式一样对待列表,将它们显示为 List[]

这清楚地表明列表有标头 List

Sequence 自动拼接成列表:

这是 Sequence 一般行为的一个特例:

Nothing 会自动从列表中删除:

此行为特定于列表:

一个 SparseArray 表示一个列表:

它们是 Equal 的:

它们可以等效的在多个命令中使用:

因为表示不相同,因此它们不完全相同:

Normal[slist] 给出 List 表示:

Parallelize[list] 并行计算 list 的元素:

Wolfram Research (1988),List,Wolfram 语言函数,https://reference.wolfram.com/language/ref/List.html (更新于 2014 年).

文本

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_2024_list, author="Wolfram Research", title="{List}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/List.html}", note=[Accessed: 21-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_list, organization={Wolfram Research}, title={List}, year={2014}, url={https://reference.wolfram.com/language/ref/List.html}, note=[Accessed: 21-November-2024 ]}