level 4
埃斯顿123🍺
楼主
在对列表进行替换时出现一些没能理解的问题,代码如下:
{{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}} /.{a_, b_} -> {If[OddQ[b], 1, 0], b}
{{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}} /.{a_, b_} :> {If[OddQ[b], 1, 0], b}
{{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}} /.{a_, b_} -> {If[b > 2, 1, 0], b}
代码运行结果如下:

第一条代码运行时,奇数判定没有起效果,我认为是因为文档中提到的:表示奇整数但不直接计算的表达式依然给出 False。
但是当把->换成规则延迟:>后,代码2中IF能够正常运行,说实话我实在没能理解为什么能够正常运行。
同样我也不太理解,为什么代码3可以正常运行,而代码1不可以。
希望各位大佬答疑解惑,在这行代码运行的过程中,软件是以什么样的顺序进行计算的,变量的值是什么时候发生变化的,什么原因造成了运行结果的差异,谢谢。
2020年06月05日 08点06分
1
{{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}} /.{a_, b_} -> {If[OddQ[b], 1, 0], b}
{{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}} /.{a_, b_} :> {If[OddQ[b], 1, 0], b}
{{1, 2}, {1, 3}, {1, 4}, {1, 5}, {1, 6}} /.{a_, b_} -> {If[b > 2, 1, 0], b}
代码运行结果如下:

第一条代码运行时,奇数判定没有起效果,我认为是因为文档中提到的:表示奇整数但不直接计算的表达式依然给出 False。但是当把->换成规则延迟:>后,代码2中IF能够正常运行,说实话我实在没能理解为什么能够正常运行。
同样我也不太理解,为什么代码3可以正常运行,而代码1不可以。
希望各位大佬答疑解惑,在这行代码运行的过程中,软件是以什么样的顺序进行计算的,变量的值是什么时候发生变化的,什么原因造成了运行结果的差异,谢谢。


