Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

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

Search the Archive

split the sublists into parts according to some rules

  • To: mathgroup at smc.vnet.net
  • Subject: [mg127904] split the sublists into parts according to some rules
  • From: Joug Raw <jougraw at gmail.com>
  • Date: Fri, 31 Aug 2012 03:58:05 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net

Dear all,

I have a long list which has many sublists inside,

Thelonglist={{a,b,c,d,e},{x,y,z},{a1,a2,a3,a4},...}

Each sublist has length > 1(no single element sublist exists) . And the
lengths of the sublists are different and unknow in advanced. The length of
some of the sublists are odd number, such as {a,b,c,d,e} and {x,y,z}. Some
sublists have even number list length, like {a1,a2,a3,a4}.

What I want to achieved is to split each sublist into two (or three, or
more) parts. In the two parts case, if the length of original sublist is
even number, the two new parts will have same length, e.g, {a1,a2,a3,a4}
become {{a1,a2},{a3,a4}}. If the sublist has length in odd number,
after splitting one of the two parts should have one more element than the
other.

That is,
Input: Thelonglist={{a,b,c,d,e},  {x,y,z},  {a1,a2,a3,a4},...}
Output: Newlist={{a,b,c}, {d,e}},  {{x,y}, {z}},  {{a1,a2}, {a3,a4}},...}

Or the same idea for the three parts case,
Input: Thelonglist={{a,b,c,d,e},  {x,y,z},  {a1,a2,a3,a4},...}
Output: Newlist={{{a,b}, {c,d}, {e}},  {{x},{y},{z}},  {{a1}, {a2},
{a3,a4}}, ...}

For the case of 4 parts, the number 4 is larger than the length of some
sublists and I will abandon those list with short length.
Input: Thelonglist={{a,b,c,d,e},  {x,y,z},  {a1,a2,a3,a4},...}
Output: Newlist={{{a}, {b}, {c}, {d,e}},  {{a1}, {a2}, {a3}, {a4}}, ...}

Could there be a simple function to achieve this idea generally? Say, a
function like *SplittoPart[**list_*, *partnumber_**]*, in which I just need
to give the input list and the number of parts of sublists I want to have.
Then it will do the job above. If the number of sublist is larger then the
length of some sublists, the function just abandon those short list and do
the split(or partition) work on the other lists with long enough length.
Could some one help me on this?

If that is too complicated, I would still be happy to see some one could
give me a solution only for the case of splitting to two parts,

Input: Thelonglist={{a,b,c,d,e},  {x,y,z},  {a1,a2,a3,a4},...}
Output: Newlist={{a,b,c}, {d,e}},  {{x,y}, {z}},  {{a1,a2}, {a3,a4}},...}

Thanks a lot for your kind help!




  • Prev by Date: Re: A problem with Manipulate
  • Next by Date: Re: What is this shorthand notation?
  • Previous by thread: Exiting a Nested operation...
  • Next by thread: Re: How to create links or bookmarks to jump to sections inside a