MathGroup Archive 2006

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

Search the Archive

Re: Replacing Numbers in a List

  • To: mathgroup at smc.vnet.net
  • Subject: [mg68294] Re: Replacing Numbers in a List
  • From: Paul Abbott <paul at physics.uwa.edu.au>
  • Date: Mon, 31 Jul 2006 06:06:21 -0400 (EDT)
  • Organization: The University of Western Australia
  • References: <eahsgh$op1$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

In article <eahsgh$op1$1 at smc.vnet.net>,
 Gregory Lypny <gregory.lypny at videotron.ca> wrote:

> Hello everyone,
> 
> I have a long list of integers called x, and I want to replace those  
> that are members of list y with the number 222.
> 
> I did it this way with a Do loop.
> 
> y = {122, 211, 212, 221, 223, 232, 322};
> Do[x = ReplacePart[x,222, Position[x, y[[i]]]],{i, Length@y} ]
> 
> Is this OK, or is there a more direct way?

No one has suggested the obvious

  x /. Thread[y -> 222]

However, this is about twice as slow as Bob Hanlon's suggestion,

  If[MemberQ[y,#],222,#]& /@ x

Test:

  y={122,211,212,221,223,232,322};

  x=Table[Random[Integer,{100,325}],{10^5}];

  Timing[x1 = x /. Thread[y -> 222];] // First
  0.051946 Second

  Timing[x2 = If[MemberQ[y,#],222,#]& /@ x;] // First
  0.037817 Second

  x1 == x2
  True

Cheers,
Paul

_______________________________________________________________________
Paul Abbott                                      Phone:  61 8 6488 2734
School of Physics, M013                            Fax: +61 8 6488 1014
The University of Western Australia         (CRICOS Provider No 00126G)    
AUSTRALIA                               http://physics.uwa.edu.au/~paul


  • Prev by Date: Re: numerical capabilities
  • Previous by thread: Re: Replacing Numbers in a List
  • Next by thread: Import pdf into a Notebook