MathGroup Archive 2006

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

Search the Archive

Re: Re: ReplaceAll applied to List


One can also use Replace with a level specification instead of  
RepalceAll, e.g.:


Replace[{1., {2}, 3},x_?AtomQ :> g,{-1}]

{g,{g},g}


Replace[{1., {2}, 3}, (x_)?( !ListQ[#1] & ) :> g, {-1}]


{g, {g}, g}

Andrzej Kozlowski



On 26 Dec 2006, at 19:38, ben wrote:

> 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: Stylesheets vs. DTDs or XML Schemas
  • Next by Date: Re: List Manipulation
  • Previous by thread: Re: ReplaceAll applied to List
  • Next by thread: Re: ReplaceAll applied to List