为什么带返回值的Scan速度会受列表大小的影响
mathematica吧
全部回复
仅看楼主
level 10
Loydman 楼主
list=Range[10^7];
Scan[If[
#^2>10,Return[#
]]&,list]//AbsoluteTiming
Do[If[list[[i]]^2>10,Return[list[[i]]]],{i,1,Length[list]}]//AbsoluteTiming
这种情况Scan慢很多
list=Range[10^7];
Scan[#^2&,list]//AbsoluteTiming
Do[list[[i]]^2,{i,1,Length[list]}]//AbsoluteTiming
这种情况Scan快一点
如何改进
2023年05月15日 14点05分 1
level 10
Loydman 楼主
第二个对比可以加一个不返回的判断比如If[#^2>10^1000,],当list比较大且所有元素都要参与计算的时候
Scan稍快一点,
当list很大,但只算了几个数就返回结果的,Do要快.
2023年05月16日 00点05分 8
吧务
level 10
我回了七楼全被删了
2023年05月16日 09点05分 12
1