Re: How can I concatenate elements
- To: mathgroup at smc.vnet.net
- Subject: [mg119924] Re: How can I concatenate elements
- From: Stefan Salanski <wutchamacallit27 at gmail.com>
- Date: Wed, 29 Jun 2011 05:31:18 -0400 (EDT)
- References: <iu4a05$jpm$1@smc.vnet.net>
On Jun 25, 5:32 am, "Leandro Tenfen" <leandroten... at hotmail.com> wrote: > Hi, > > I have two lists: > > s1={1,2,3,4,5,6}; > s2={c,k}; > > How can I concatenate elements of lists as follows: > > s3={1c,2c,3c,4c,5c,6c,1k,2k,3k,4k,5k,6k} > > Many Thanks! It looks like Outer is the function which fits your problem best. Just use StringJoin as your product function. To use StringJoin, you will need to have both lists be lists of strings, so {"1", "2", "3", ..etc... } not just {1,2,3...}, and {"c","k"} not just {c,k}. In[21]:= s1 = ToString /@ Range[6]; s2 = {"c", "k"}; In[23]:= Flatten@Outer[StringJoin, s1, s2] Out[23]= {"1c", "1k", "2c", "2k", "3c", "3k", "4c", "4k", "5c", "5k", "6c", "6k"} if you want the resulting list in the order you specified, you can either sort that list.. though you'd have to sort it starting from the end of the string, so like In[24]:= StringReverse /@ Sort[StringReverse /@ %] Out[24]= {"1c", "2c", "3c", "4c", "5c", "6c", "1k", "2k", "3k", "4k", "5k", "6k"} Or you can just switch the order of the lists in Outer, and the order of the elements passed to StringJoin like this: In[25]:= Flatten@Outer[StringJoin[#2, #1] &, s2, s1] Out[25]= {"1c", "2c", "3c", "4c", "5c", "6c", "1k", "2k", "3k", "4k", "5k", "6k"} Hope that helps -Stefan Salanski