MathGroup Archive 2006

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

Search the Archive

Re: ReplaceAll applied to List

  • To: mathgroup at smc.vnet.net
  • Subject: [mg72320] Re: ReplaceAll applied to List
  • From: "ben" <benjamin.friedrich at gmail.com>
  • Date: Tue, 26 Dec 2006 05:38:31 -0500 (EST)
  • References: <em8jdu$pel$1@smc.vnet.net>

Hi

ReplaceAll using AtomQ is applied to all subexpressions, including
heads.
Thats why a list (head=List) is changed into g[something] with head g.

I do not have an elegant solution, but this should work

mylist = {1, {2}};
If[ListQ[#], #, f[#]] & /@ mylist

Alternatively

f[x_?NumericQ] := 2x
f[x_?ListQ] := x

f/@mylist

Bye
Ben

Hannes Kessler schrieb:

> Hello,
>
> I want to apply transformation rules to those elements of a list which
> are not lists themselves. The structure of the list is unknown in
> advance.
>
> The following simple examples illustrate my my problems with ReplaceAll
> and List:
>
> Expected result:
> {1., {2}, 3} /. x_?NumericQ :> g
> --> {g,{g},g}
>
> Unexpected result - inspite of AtomQ[{1., {2}, 3}] giving False
> {1., {2}, 3} /. x_?AtomQ :> g
> --> g[g, g[g], g]
>
> Similarly unexpected result - inspite of Not[ListQ[{1., {2}, 3}]]
> giving False
> {1., {2}, 3} /. x_?(Not[ListQ[#]] &) :> g
> --> g[g, g[g], g]
>
> Any explanations for this behavior?
> 
> Thanks in advance,
> Hannes Kessler


  • Prev by Date: RE: Re: image border
  • Next by Date: Any simple way to flatten all but the bottom level?
  • Previous by thread: ReplaceAll applied to List
  • Next by thread: Re: Re: ReplaceAll applied to List