You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GP/Pari中能否通过传引用修改容器(矩阵)的大小?

在GP/Pari中通过传引用修改容器大小的问题

问题原因分析

GP/Pari的传引用(~符号)仅支持修改容器已有元素的值,但当你执行x=concat(x,2)这类操作时,本质是创建了一个全新的容器对象,然后将参数x重新绑定到这个新对象上——原容器(比如示例中的v)的引用并未被更新,所以原变量不会发生变化,这是符合GP/Pari设计逻辑的行为。

可行的传引用实现方式

如果要通过传引用直接修改原容器的大小,不要使用concat生成新对象,而是直接扩展原容器的长度并赋值新元素:

数组示例

v=[1];
r(~x)=x[#x+1]=2;  # #x获取当前元素数量,直接给下一个位置赋值
r(~v);
v  # 结果为 [1,2]

矩阵示例(行矩阵扩展列)

m=[1,2];
add_col(~m)=m[, #m[1]+1] = 3;  # 为新列赋值
add_col(~m);
m  # 结果为 [1,2,3]

传值重新赋值的场景

如果一定要使用concat,则只能通过传值调用,再将返回的新容器重新赋值给原变量:

r(x)=concat(x,2);
v=r(v);  # v更新为 [1,2]

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:20:48