MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Apply a function to parts of a list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg110331] Re: Apply a function to parts of a list
  • From: Bob Hanlon <hanlonr at cox.net>
  • Date: Sun, 13 Jun 2010 04:12:46 -0400 (EDT)

data = Thread[Array[#, 3] & /@ {x, y}]

{{x[1], y[1]}, {x[2], y[2]}, 
   {x[3], y[3]}}

data /. {a_, b_} -> {a, b/2}

{{x[1], y[1]/2}, {x[2], y[2]/2}, 
   {x[3], y[3]/2}}

{1, 1/2} # & /@ data

{{x[1], y[1]/2}, {x[2], y[2]/2}, 
   {x[3], y[3]/2}}

{#[[1]], #[[2]]/2} & /@ data

{{x[1], y[1]/2}, {x[2], y[2]/2}, 
   {x[3], y[3]/2}}


Bob Hanlon

---- Rui <rui.rojo at gmail.com> wrote: 

=============
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

Thanks guys



  • Prev by Date: Re: Apply a function to parts of a list
  • Next by Date: Re: Apply a function to parts of a list
  • Previous by thread: Re: Apply a function to parts of a list
  • Next by thread: Re: Apply a function to parts of a list