"ExprStruct" (数据结构)

"ExprStruct"

表示无需计算即可修改的表达式.

更多信息

  • "ExprStruct" 可用于在不进行运算的情况下处理 Wolfram 语言表达式.
  • "ExprStruct" 进行不可变调整,总是将结果作为新的数据结构返回:
  • CreateDataStructure["ExprStruct",expr]创建一个包含 expr 的新 "ExprStruct"
    Typed[x,"ExprStruct"]将类型 "ExprStruct>" 赋予 x
  • 用带有 "ExprStruct" 元素的 Import 格式 "WL" 创建 "ExprStructs" 数据结构.
  • 用带有 "ExprStruct" 元素的 Import 格式 "WXF""MX" 创建 "ExprStruct" 数据结构.
  • 对于 "ExprStruct" 类型的数据结构,可以使用以下运算:
  • ds["Apply",fun]返回一个 expr 结构,其中表达式的头部被 fun 替换时间:O(n)
    ds["ConstructWith",fun]返回一个新的 expr 结构,其中 fun 应用于表达式时间:O(1)
    ds["Depth"]指明表达式任何部分的最大索引数时间:O(1)
    ds["Drop",i]返回一个新的 expr 结构,其中删除了第 i 个元素时间:O(n)
    ds["Drop",i,j]返回一个新的 expr 结构,其中删除了 ij 之间的元素时间:O(n)
    ds["Evaluate"]返回计算表达式的新 expr 结构
    ds["Fold",fun]fun 应用于表达式的元素,累计结果时间:O(n)
    ds["Fold",fun]fun 应用于表达式的元素,从 init 开始,并累计结果时间:O(n)
    ds["Get"]返回 ds 持有的表达式时间:O(1)
    ds["Head"]返回一个包含表达式头部的新 expr 结构时间:O(1)
    ds["Insert",x,i]返回一个新的 expr 结构,其中 x 插入到位置 i时间:O(n)
    ds["Length"]存储在表达式中的元素数量时间:O(1)
    ds["Map",fun]返回一个新的 expr 结构,将 fun 应用于表达式的每个元素时间:O(n)
    ds["MapImmediateEvaluate",fun]返回一个新的 expr 结构,将 fun 应用于表达式的每个元素并对其进行计算时间:O(n)
    ds["Part",i]返回表达式第 i 部分的新 expr 结构时间:O(1)
    ds["ReplacePart",ix]返回一个新的 expr 结构,其中表达式的第 i 部分被替换为 x时间:O(n)
    ds["Visualization"]返回 ds 的可视化表示时间:O(n)
  • 还支持以下函数:
  • dsi===dsjdsi 等于 dsj 则为 True
    FullForm[ds]ds 的完全形式
    Information[ds]ds 的信息
    InputForm[ds]ds 的输入形式
    Normal[ds]ds 转换为一般表达式

范例

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

基本范例  (2)

可以使用 CreateDataStructure 创建一个新的 "ExprStruct"

ds 的表达式的长度:

返回一个用 h 对表达式进行封装的新 "ExprStruct"

返回保存在新 expr 结构中的表达式:

原始 "ExprStruct" 无变化:

"ExprStruct" 的可视化表达:

范围  (4)

信息  (1)

可使用 CreateDataStructure 创建新的 "ExprStruct"

数据结构 ds 的相关资料:

导入  (3)

使用 "ExprStructs" 元素导入 "WL" 格式会创建 "ExprStruct" 数据结构:

使用 Import 将字符串加载到 "ExprStruct" 中:

表达式保持不变:

使用 "ExprStruct" 元素导入 "WXF" 格式会创建 "ExprStruct" 数据结构:

表达式保持不变:

使用 "ExprStruct" 元素导入 "MX" 格式会创建 "ExprStruct" 数据结构:

返回原始表达式:

应用  (1)

未计算的表达式  (1)

"ExprStruct" 对于处理未计算的表达式很有用. 创建一个新的 "ExprStruct"

Plus 替换头部:

基础表达式进行不计算:

f 应用于每个元素会创建新表达式:

但是,"Map" 运算不会对应用程序进行计算:

要在应用后计算每个元素,请使用 "MapImmediateEvaluate" 的运算: