Wolfram 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

在离散数学建模课上的一个家庭作业问题中,我们被要求在Mathematica中创建一个函数,它输入一个列表,并对列表中的每个元素进行平方运算。这是一项简单的任务,我已经完成了以下工作:

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)