Re: Nested List Abs[]
- To: mathgroup at smc.vnet.net
- Subject: [mg121048] Re: Nested List Abs[]
- From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
- Date: Thu, 25 Aug 2011 07:04:35 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <j328jc$b4n$1@smc.vnet.net>
On Wed, 24 Aug 2011 08:18:04 +0100, Sam Korn <sam at kornfamily.com> wrote:
> I have a list, and each element of the
> list is a sublist with two integers. How do I delete from the larger
> list any integer pair whose numerical distance apart is greater than
> one? I'd been trying to map Abs[Subtract[#1,#2]]&<1 over the list, but
> so far that hasn't worked.
>
> Any suggestions?
>
> Sent from my iPhone
>
In[1] :=
list = RandomInteger[{-5, 5}, {10, 2}]
Out[1] =
{{-4, -4}, {-2, 3}, {-3, -2}, {5, -1}, {5, 2}, {4, 0}, {3, 2}, {-5, -5},
{-2, -1}, {-5, -5}}
In[2] :=
DeleteCases[list, p_List /; Abs[Subtract @@ p] > 1, {1}]
Out[2] =
{{-4, -4}, {-3, -2}, {3, 2}, {-5, -5}, {-2, -1}, {-5, -5}}
In[3] :=
posns = Position[list, p_List /; Abs[Subtract @@ p] > 1, {1}];
Delete[list, posns]
Out[4] =
{{-4, -4}, {-3, -2}, {3, 2}, {-5, -5}, {-2, -1}, {-5, -5}}
In[5] :=
mask = Abs[Subtract @@ #] <= 1 & /@ list;
Pick[list, mask]
Out[6] =
{{-4, -4}, {-3, -2}, {3, 2}, {-5, -5}, {-2, -1}, {-5, -5}}
Sent from my PC