Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: split the sublists into parts according to some rules
Replies: 2   Last Post: Sep 4, 2012 5:46 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Dr.J

Posts: 22
Registered: 5/30/12
split the sublists into parts according to some rules
Posted: Aug 31, 2012 4:00 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply


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!





Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.