Re: converting a list element into a number?
- To: mathgroup at smc.vnet.net
- Subject: [mg98628] Re: [mg98585] converting a list element into a number?
- From: "David Park" <djmpark at comcast.net>
- Date: Tue, 14 Apr 2009 06:20:04 -0400 (EDT)
- References: <23525817.1239608871309.JavaMail.root@n11>
There may be more than one position in an expression that matches a pattern. And each position may have a multiple level specification. That is why the result is returned as a list of lists. If there is only one position at the first level you could use Part to extract its value. pos = Position[x + y, y] Part[pos, 1, 1] {{2}} 2 Or you could write: pos = Position[x + y, y] pos[[1, 1]] {{2}} 2 I often use the first form, just to be more explicit and get rid of double brackets. Another good practice in learning, and also in developing code and routines, is to write multiple steps in one cell. Put each step on a new line (but in the same cell). You can use % and %% to refer to the output of previous lines. Then, when you evaluate you can see what each step is doing. Keep changing, adding and experimenting, each time reevaluating the cell, until you understand what is happening and you get what you want. If you wish, you can even interlace the statements with Print statements to annotate what you think you are doing. Print["The initial expression"] expr = x + y Print["Find the position of y"] Position[expr, y] Print["Extract the number using Part"] Part[%%, 1, 1] Print["Check it using Part with the position on the expression"] Part[expr, %%] You could have multiple statements in a row, some of them with semicolons at the end if you want to suppress that particular output. With or without the Print statements this is a really useful way to develop a calculation. David Park djmpark at comcast.net http://home.comcast.net/~djmpark/ From: meitnik [mailto:meitnik at gmail.com] Hi I have noticed when using Position[], it returns a single element list. So how do I convert that into a number other than using Flatten to strip off the braces? It seems if I use Flatten within any subroutine code, I get the error code thats its "Protected". So how do I work around using Flatten?? Thanks