Re: Lists and rules
- To: mathgroup at smc.vnet.net
- Subject: [mg66514] Re: Lists and rules
- From: Peter Pein <petsie at dordos.net>
- Date: Wed, 17 May 2006 03:30:36 -0400 (EDT)
- References: <e4bj1m$1b9$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Thomas Schmelzer schrieb: > Experts, > I would like to produce a decent piece of code for one of my projects. > I am constructing a list of sets > > S_1, S_2 and S_3 > > where S_j = { m , T[[1,m]] == j, m running from 1 to 100} > > T[[1,*]] is a row vector containing only 1, 2 and 3. > > I could setup a for loop and work with append. I have done that, but I > believe this approach is neither efficient nor elegant. Any hints for a > newbie? > > Best, > Thomas > > > Hi Thomas, I choose 10 instead of 100 to keep the output small: T = Table[Random[Integer, {1, 3}], {3}, {10}]; and now assign S[n] the positions of n in T[[1]]: Do[S[n] = Flatten[Position[T[[1]], n]], {n, 3}] test: T[[1]] --> {2, 3, 2, 3, 3, 1, 2, 1, 3, 3} Information["S", LongForm -> True] --> Global`S S[1] = {6, 8} S[2] = {1, 3, 7} S[3] = {2, 4, 5, 9, 10} HTH, Peter