Wolfram mathematica 数论中数列的平方
在离散数学建模课上的一个家庭作业问题中,我们被要求在Mathematica中创建一个函数,它输入一个列表,并对列表中的每个元素进行平方运算。这是一项简单的任务,我已经完成了以下工作:Wolfram mathematica 数论中数列的平方,wolfram-mathematica,Wolfram Mathematica,在离散数学建模课上的一个家庭作业问题中,我们被要求在Mathematica中创建一个函数,它输入一个列表,并对列表中的每个元素进行平方运算。这是一项简单的任务,我已经完成了以下工作: sqList[list_] = (list)^2; 但我想用一个“for循环”来实现这一点。这是我的密码: sqList2[list2_] := ( For[j = 1, j <= Length[list2], j++, ( list2[j]^2; )]; li
sqList[list_] = (list)^2;
但我想用一个“for循环”来实现这一点。这是我的密码:
sqList2[list2_] :=
(
For[j = 1, j <= Length[list2], j++,
(
list2[j]^2;
)];
list2
);
sqList2[list2]=
(
对于[j=1,j使用示例列表
list = {1, 2, 3};
sqList[list_] := list^2
sqList[list]
{1,4,9}
这是因为Power
(^
)是可列出的:
Attributes[Power]
{可列表,数字函数,OneIdentity,受保护}
逐个元素处理列表元素的步骤
sqList2[list2_] := Module[{squaredlist = {}, j},
For[j = 1, j <= Length[list2], j++,
AppendTo[squaredlist, list2[[j]]^2]];
squaredlist]
sqList2[list]
{1,4,9}
注意
这种形式的函数与您尝试过的函数非常接近,但不起作用,因为list2
是一个输入变量,无法修改
sqList2[list2_] := (
For[j = 1, j <= Length[list2], j++,
list2[[j]] = list2[[j]]^2];
list2)
sqList2[list2]:=(
对于[j=1,j请注意,Mathematica在上有自己的StackExchange站点,如果您想编写循环,请使用C或其他不能执行列表或数组操作的糟糕语言。学习在Mathematica中编写循环并不是真正学习Mathematica。撇开它不谈,您的循环代码不会分配list2[j]的结果^2
对任何这样的Mathematica进行静默计算(这是尾随的;
所做的)并继续进行。在函数末尾,它返回未修改的输入参数(list2
)。+1,但请注意,使用AppendTo
构建长列表的速度会很慢。有更好的替代方法(例如,Sow
/Reap
)。是的,如果我关心性能,我会使用链表,例如,模块[{squaredlist={}}}[j=1,j如果我关心性能,我根本不会使用显式循环。list^2
,完成了。我不愿意给这个答案打+1分,因为我认为教Mathematica的新手写循环就像教青少年在学习吸烟时使用过滤器一样。
sqList2[list2_] := (
For[j = 1, j <= Length[list2], j++,
list2[[j]] = list2[[j]]^2];
list2)
sqList2[list2input_] := (
list2 = list2input;
For[j = 1, j <= Length[list2], j++,
list2[[j]] = list2[[j]]^2];
list2)