对于Thread[f[data1, data2], List, {2}] ,他是先计算f只线性作用于第2个变量,此时f仅作为头部,而不是进行头部计算,而Thread[Position[data1, data2], List, {2}]中,则是进行了Position[data1, data2],的头部运算了,Thread[f[data1, data2], List, {2}] 的结果是{f[{1, 2, 3, 4}, 2], f[{1, 2, 3, 4}, 3]},对于这个结果再加上/.f -> Position,则是进行了头部替换,运算结果是{{{2}}, {{3}}}。