MathGroup Archive 2009

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

Search the Archive

Re: Transforming a list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg103167] Re: [mg103108] Transforming a list
  • From: "David Park" <djmpark at comcast.net>
  • Date: Wed, 9 Sep 2009 04:47:44 -0400 (EDT)
  • References: <19833309.1252405067052.JavaMail.root@n11>

One method would be to use Sequence[] objects.

lst = {{c, e, g}, {d, f}, {e, g}, {f}, {g}, {}};

newLst = Transpose[Map[PadRight[#, Length[lst[[1]]], Null] &, lst]]
% /. Null -> Sequence[]

Giving...

{{c, d, e, f, g, Null}, {e, f, g, Null, Null, Null}, {g, Null, Null, 
  Null, Null, Null}}
{{c, d, e, f, g}, {e, f, g}, {g}}


David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/  



From: Don [mailto:donabc at comcast.net] 

I am given: lst =  {{c, e, g}, {d, f}, {e, g}, {f}, {g}, {}}

I want to form a list of sublists where the first sublist consists of the
first elements
from each sublist of lst, the second sublist the second elements from each
of the sublists of lst etc.

The final outcome should be:
{{c, d, e, f, g}, {e, f, g}, {g}}

I can do this by first padding the sublists of lst (to make them the same
length)and then using Transpose. But how to get rid of the trailings 0's?

For example:

newLst = Map[PadRight[#, Length[lst[[1]]]] &, lst]

Transpose[newLst]

which produces:

{{c, d, e, f, g, 0}, {e, f, g, 0, 0, 0}, {g, 0, 0, 0, 0, 0}}

Is there a better way to end up with

{{c, d, e, f, g}, {e, f, g}, {g}}

Thank you.




  • Prev by Date: Re: Bug with Integrate in v7?
  • Next by Date: Re: Bug with Integrate in v7?
  • Previous by thread: Re: Transforming a list
  • Next by thread: Re: Transforming a list