MathGroup Archive 2006

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

Search the Archive

Re: To apply a function to a List

  • To: mathgroup at smc.vnet.net
  • Subject: [mg65641] Re: [mg65597] To apply a function to a List
  • From: János <janos.lobb at yale.edu>
  • Date: Tue, 11 Apr 2006 04:04:54 -0400 (EDT)
  • References: <200604100631.CAA14845@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On Apr 10, 2006, at 2:31 AM, Francisco Javier wrote:

> Dear all,
>
> Let f, l be a function and a list respectively. How can we do
>
> Table[f[list[[n]]],{n,1, Length[list]}]
>
> in another way?
>
> Thanks.
>
> --  
> ----
> Francisco Javier García Capitán
> http://garciacapitan.auna.com

Here are two newbie approaches;

In[1]:=
lst = Table[a[i], {i, 1, 10}]
Out[1]=
{a[1], a[2], a[3], a[4],
   a[5], a[6], a[7], a[8],
   a[9], a[10]}

In[2]:=
f[x_] := func[x]

The first is to use Map.
In[3]:=
(f[#1] & ) /@ lst
Out[3]=
{func[a[1]], func[a[2]],
   func[a[3]], func[a[4]],
   func[a[5]], func[a[6]],
   func[a[7]], func[a[8]],
   func[a[9]], func[a[10]]}

The second is to set f Listable:

Here it is f without Listable:

In[4]:=
f[lst]
Out[4]=
func[{a[1], a[2], a[3], a[4],
    a[5], a[6], a[7], a[8],
    a[9], a[10]}]

Let now set Listable for f:

In[5]:=
SetAttributes[f, Listable]

In[6]:=
f[lst]
Out[6]=
{func[a[1]], func[a[2]],
   func[a[3]], func[a[4]],
   func[a[5]], func[a[6]],
   func[a[7]], func[a[8]],
   func[a[9]], func[a[10]]}

With 10^6 elements on my machine the Map takes 3.03 second, the  
direct apply of the Listable f takes about 2.25 seconds.
I am sure, there are some other more cleaver ways.
János


----------------------------------------------
Trying to argue with a politician is like lifting up the head of a  
corpse.
(S. Lem: His Master Voice)


  • Prev by Date: Re: For Loop problem
  • Next by Date: Re: For Loop problem
  • Previous by thread: Re: To apply a function to a List
  • Next by thread: Re: To apply a function to a List