我经常有一个成对的列表,例如
data = {{0,0.0},{1,12.4},{2,14.6},{3,25.1}}
我想做点什么,例如Rescale
,到所有第二个元素而不触及第一个元素。我知道的最巧妙的方法是:
Transpose[MapAt[Rescale, Transpose[data], 2]]
一定有一种方法可以做到这一点,而不需要那么多Transpose
ing。我的愿望是让这样的事情发挥作用:
MapAt[Rescale, data, {All, 2}]
但我的理解是MapAt
takes Position
- 样式规范而不是Part
款式规格。正确的解决办法是什么?
澄清,
我正在寻找一种不必重复自己的解决方案,因此缺乏双重Transpose
或双[[All,2]]
,因为我认为重复是一个信号,我没有以最简单的方式做某事。然而,如果消除重复需要引入中间变量或命名函数或其他额外的复杂性,则转置/非转置解决方案可能已经是正确的。