Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Replace 朱莉娅-替换_Replace_Julia - Fatal编程技术网

Replace 朱莉娅-替换

Replace 朱莉娅-替换,replace,julia,Replace,Julia,我试过下面的方法,效果很好 a=[1,2,3] b=[5,6,7] for i=1:3 a=replace(a,a[i]=>b[i]*a[i]) end 结果显示:a=[5,12,21],这是我想要的产品,元素级产品 然而,我试着用同样的方法得到我想要的产品,但没有成功 a=[] for i=1:10 a=push!(a,2^i) end for i=1:10 a=replace(a,a[i]=>a[i]*a[i]) end 但结果是 a=[65536

我试过下面的方法,效果很好

a=[1,2,3]
b=[5,6,7]

for i=1:3
    a=replace(a,a[i]=>b[i]*a[i])
end
结果显示:a=[5,12,21],这是我想要的产品,元素级产品

然而,我试着用同样的方法得到我想要的产品,但没有成功

a=[]
for i=1:10
    a=push!(a,2^i)
end

for i=1:10
    a=replace(a,a[i]=>a[i]*a[i])
end
但结果是

a=[65536,65536,4096,65536,1048576,4096,16384,65536,262144,1048576]
我想屈服

a=[4,16,64,256,1024,4096,16384,65536,262144,1048576]

这里的问题是,
replace
可能不符合您的要求。命令

replace(A, old => new)
获取一个集合
a
,并创建一个新集合,其中每次出现的
old
都被
new
替换

因此,如果我们看一下您的示例,在第一次迭代中,我们用
4
替换
a[1]==2
。这就产生了

a == [4, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
a == [16, 16, 8, 16, 32, 64, 128, 256, 512, 1024]
在第二次迭代中,我们用
16
替换出现的
a[2]==4
。这就产生了

a == [4, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
a == [16, 16, 8, 16, 32, 64, 128, 256, 512, 1024]
等等。这应该可以解释为什么你会得到那个奇怪的结果

除了奥斯卡·史密斯在评论中提到的广播
a.=a.*a
a.=a.^2
,您还可以使用
map

a = map(x -> x^2, a)
或者
map

map!(x -> x^2, a, a)

map
map之间的区别就是说,
map
创建了一个新版本,并且
map写入已存在的集合。在本例中,输入集合与输出集合相同。

这里的问题是,
replace
可能无法执行您想要的操作。命令

replace(A, old => new)
获取一个集合
a
,并创建一个新集合,其中每次出现的
old
都被
new
替换

因此,如果我们看一下您的示例,在第一次迭代中,我们用
4
替换
a[1]==2
。这就产生了

a == [4, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
a == [16, 16, 8, 16, 32, 64, 128, 256, 512, 1024]
在第二次迭代中,我们用
16
替换出现的
a[2]==4
。这就产生了

a == [4, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
a == [16, 16, 8, 16, 32, 64, 128, 256, 512, 1024]
等等。这应该可以解释为什么你会得到那个奇怪的结果

除了奥斯卡·史密斯在评论中提到的广播
a.=a.*a
a.=a.^2
,您还可以使用
map

a = map(x -> x^2, a)
或者
map

map!(x -> x^2, a, a)

map
map之间的区别就是说,
map
创建了一个新版本,并且
map写入已存在的集合。在本例中,输入集合与输出集合相同。

是否有理由不使用
a.=a.*a
?大多数人都会觉得这件衣服很干净,奥斯卡·史密斯,谢谢你的回答!:)我还没试过这个!因为我将在这个操作之外有另一个for循环,所以我不确定这个操作是如何工作的,你建议的操作。在文档中查找的内容基本上是广播
使操作按元素应用。好的!非常感谢!~:)它起作用了!非常感谢你!:)有什么理由不想只使用
a.=a.*a
?大多数人都会觉得这件衣服很干净,奥斯卡·史密斯,谢谢你的回答!:)我还没试过这个!因为我将在这个操作之外有另一个for循环,所以我不确定这个操作是如何工作的,你建议的操作。在文档中查找的内容基本上是广播
使操作按元素应用。好的!非常感谢!~:)它起作用了!非常感谢你!:)谢谢你,西蒙!解释得很好!现在我明白了!:)谢谢你,西蒙!解释得很好!现在我明白了!:)