Re: Apply a function to parts of a list
- To: mathgroup at smc.vnet.net
- Subject: [mg110318] Re: Apply a function to parts of a list
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Sun, 13 Jun 2010 04:10:24 -0400 (EDT)
- References: <huvk7i$rtn$1@smc.vnet.net>
Am 12.06.2010 11:32, schrieb Rui: > I have always done very ugly code when trying to do something > seemingly simple and basic such as applying a function to subparts of a list. > Simple example, I want to divide by 2 all the second elements of a > list > {{a, 5}, {b, 6}, ...} --> {{a, 5/2}, ...} > > My ideas: > Transpose -> MapAt/Map -> Transpose > Build the sublist with Part and then rebuild it > Use Map and a function like #[[All, 2]] and then rebuild it. > > I don't like any solution. I wanted to know if there's anything simple > that I'm overseing Here are two that I often use: list = {{a, 5}, {b, 6}, {c, 7}}; Replace[list, {x_, y_} :> {x, y/2}, {1}] {#1, #2/2} & @@@ list where @@@ is a shortcat for Apply at level 1, see the documentation for details... hth, albert