MathGroup Archive 2005

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

Search the Archive

Re: List Replace Problems

  • To: mathgroup at smc.vnet.net
  • Subject: [mg59862] Re: [mg59831] List Replace Problems
  • From: Pratik Desai <pdesai1 at umbc.edu>
  • Date: Wed, 24 Aug 2005 06:30:45 -0400 (EDT)
  • References: <200508230851.EAA03004@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

wesh wrote:

>I want to perform some element by element operations on a class of
>lists. For a given list The operation in a much simplified form can be
>characterized by
>
>a = {1, 3, 5, 7, 9}; 
>Do[a[[i]] /= i, {i, 1, 5}]; 
>a
>
>Out[38]=
>{1, 3/2, 5/3, 7/4, 9/5}
>
>Now, however, if I try to define a function to do this for a general
>list, namely,
>
>dlst[u_List] =
>   Do[u[[i]] /= i,  {i, 1, 5}]; 
>a = {1, 3, 5, 7, 9}; 
>dlst[a]; 
>a
>
>Set::setps: 
>({1, 2, 3, 4, 5}) in assignment of part is not a symbol. ! More ...
>
>Out[39]=
>{1, 3, 5, 7, 9}
>
>I get the above error. It says I'm trying to assign one number to
>another number. Why does Mathematica perform in the first case but 
>refuse to in the second.
>
>I tried
>
>b = Do[ReplacePart[a,  a[[i]]/i, i], {i, 1, 5}]
>
>but it doesn't even bother to return an error message.
>
>
>How, can I get the desired function?
>
>Thanks,
>
>Wesh
>
>  
>
How about some thing like this using module

dlst[u_?ListQ, r_?IntegerQ] := Module[{list1, list2}, list1 =
  u; If[r > Length[list1], Print["Incompatible Iterator please revise
    your argument"], list2 = Table[list1[[s]]/s, {s, 1, r, 1}]]]

Hope this helps

Pratik

-- 
Pratik Desai
Graduate Student
UMBC
Department of Mechanical Engineering
Phone: 410 455 8134



  • Prev by Date: Re: Grassmann variables using NonCommutativeMultiply
  • Next by Date: Re: Distribution and Integral
  • Previous by thread: List Replace Problems
  • Next by thread: Re: List Replace Problems