Re: Removing list elements in x by list y
- To: mathgroup at smc.vnet.net
- Subject: [mg131177] Re: Removing list elements in x by list y
- From: Dana DeLouis <dana01 at icloud.com>
- Date: Sat, 15 Jun 2013 04:25:48 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
> I wish to "subtract" y from x, i.e. remove exactly the elements in x
Hello. I may be wrong, but if you have 10 each of everything, and wanted to subtract 8 of each item, you should be left with 2 items of each.
x=Table[{a,b,c,d},{10}]//Flatten//Sort;
y=Table[{a,b,c,d},{8}]//Flatten//Sort;
Select[x,FreeQ[y,#]&]
{}
Cases[x,_?(FreeQ[y,#]&)]
{}
Pick[x,FreeQ[y,#]&/@x]
{}
Delete[x,Flatten[Map[Position[x,#]&,y],1]]
{}
x/.a_/;MemberQ[y,a]->Sequence[]
{}
Delete[x,Flatten[Position[x,#]&/@y,1]]
{}
DeleteCases[x,Alternatives@@y]
{}
Select[x,!MemberQ[y,#]&]
{}
I believe the answer should be:
Fold[DeleteCases[#1,#2,1,1]&,x,y]
{a,a,b,b,c,c,d,d}
On Thursday, June 13, 2013 2:31:35 AM UTC-4, Dr. Wolfgang Hintze wrote:
> I have simple question.
>
>
>
> Given two lists
>
>
>
> x = {u, v, w, w, d};
>
> y = {u, d};
>
>
>
> I wish to "subtract" y from x, i.e. remove exactly the elements in x
>
> which belong to y giving
>
>
>
> x "-" y = {v,w,w}
>
>
>
> Complement[] gives instead {v,w}.
>
> Note that we are talking about lists rather than sets.
>
>
>
> I'm sure there is a simple standard command, but I can't find it.
>
> Can you?
>
>
>
> Regards,
>
> Wolfgang