Re: Scalars Instead of Lists with One Element

*To*: mathgroup at smc.vnet.net*Subject*: [mg83455] Re: Scalars Instead of Lists with One Element*From*: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>*Date*: Wed, 21 Nov 2007 02:43:26 -0500 (EST)*Organization*: The Open University, Milton Keynes, UK*References*: <fhu75c$72j$1@smc.vnet.net>

Gregory Lypny wrote: > Say I have the list x={2, 7}. Is there a command I can use to get 2 > rather than {2} when I ask for x[[1]], and 7 rather than {7} when I Here, I do not follow (or understand) you. You have a list of scalars and taking any one of its elements with *Part* will produce a scalar and not a list of one element. Or you may have something else in mind... For instance, In[1]:= x = {2, 7} Out[1]= {2, 7} In[2]:= x[[1]] Out[2]= 2 In[3]:= x[[2]] Out[3]= 7 As you can see above, no list is returned in this case. > ask for x[[2]]? Doing so would solve my problem with my tables being > too deep to be able to cut and paste directly into the table objects > of other applications like word processors and spread sheets. You could use the system variable *$Post* and set up your own post processing function. (You might be interested in $PrePrint too.) Here is an example of such a function that should do what you are looking for, though you may want to add some additional tests (or remove few of them). In[1]:= $Post = If[Head[#] === List && Length[#] == 1 && Depth[#] < 3, #[[1]], #] &; prob = {.4, {.6}, {.4, .6}, {{.4, .6}}}; prob[[1]] (* Scalar: not a list, depth one *) prob[[2]] (* List of length one and depth two *) prob[[3]] (* List of length two and depth two *) prob[[4]] (* List of length one and depth three *) $Post =. (* Reset $Post *) Out[3]= 0.4 Out[4]= 0.6 Out[5]= {0.4, 0.6} Out[6]= {{0.4, 0.6}} Best regards, -- Jean-Marc