Re: Clever way to manipulate lists
- To: mathgroup at smc.vnet.net
- Subject: [mg94398] Re: [mg94366] Clever way to manipulate lists
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Thu, 11 Dec 2008 07:31:20 -0500 (EST)
- Reply-to: hanlonr at cox.net
list1 = {{x1, y1}, {x2, y2}, {x3, y3}, {xN, yN}};
list2 = {{x1, z1}, {x3, z3}, {xN, zN}};
Select[list1, MemberQ[list2[[All, 1]], #[[1]]] &]
{{x1, y1}, {x3, y3}, {xN, yN}}
Cases[list1, _?(MemberQ[list2[[All, 1]], #[[1]]] &)]
{{x1, y1}, {x3, y3}, {xN, yN}}
DeleteCases[list1, _?(FreeQ[list2[[All, 1]], #[[1]]] &)]
{{x1, y1}, {x3, y3}, {xN, yN}}
Bob Hanlon
---- guerom00 <guerom00 at gmail.com> wrote:
=============
Hi everyone,
I'm still struggling through lists manipulation. I'll take a concrete
example to illustrate my point.
Let's say I have a first list, say coordinates on a regular grid :
list1={{x1,y1},{x2,y2},{x3,y3}...{xN,yN}}
This obviously has a Length of N. Now, let's say I have a second list.
In this one, there are fewer than N elements, some points are
missing... Let's say it misses a point at x2 :
list2 ={{x1,z1},{x3,z3},{x4,z4}...{xN,zN}}
Now, since those two lists are not of the same length, I cannot add
them, substract them or something. But list2 is included in list1 (in
the sense of set theory). Now, what I want to do is, in this example,
remove the point {x2,y2} from list1 and then the two list will have
the same length and I'll be able to manipulate them as I want.
Right now, I do that with For loops (detect elements which are in
list1 and not in list2 and delete them, etc...) and that works but it
is not elegant.
I'm looking for a concise, elegant way to do that if somebody sees
what I mean...
Thanks in advance :)
--
Bob Hanlon