Re: How do I test for existence of a list element? Clarified
- To: mathgroup at smc.vnet.net
- Subject: [mg112736] Re: How do I test for existence of a list element? Clarified
- From: Joseph Gwinn <joegwinn at comcast.net>
- Date: Wed, 29 Sep 2010 04:11:28 -0400 (EDT)
- References: <i7pp76$l9j$1@smc.vnet.net>
In article <i7pp76$l9j$1 at smc.vnet.net>, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > The function Check is (probably) what you are looking for. > > list == {a, b, c, d}; > > x == Check[list[[60]], {}] > During evaluation of In[69]:== Part::partw:Part 60 of {a,b,c,d} does not > exist. >> > {} > > You can use whatever you like instead of {}. If you don't want to see the > error message you don't have to: > > x==Quiet[Check[list[[60]],{}]] > {} This looks quite suitable. I knew that Mathematica must have such a function, somewhere in those thousands of functions and variants. Thanks, Joe Gwinn > Andrzej Kozlowski > > > On 26 Sep 2010, at 08:42, Joseph Gwinn wrote: > > > I have an application where I am bouncing around in a list, and may > > accidentally ask for an element beyond the end of the list, which causes > > Mathematica to complain and balk, preventing completion. > > > > Is there any way to test for the existence of a list element without > > provoking complaint or balking should the list item fail to exist? > > > > > > > > Many of the suggestions made offline in response to the above imply that > > I wasn't clear enough, so here is some expansion: > > > > All the list operations like MemberQ tell you if a member of the list > > has some property or not. But it does not solve the problem of telling > > if a slot (part) exists or not. > > > > For instance: > > > > list=={a, b, c, d}; x==list[[60]] > > > > Mathematica will complain that "list[[60]]" does not exist, which is true. > > > > Mathematica's specific complaint is "Part::partw: Part 60 of {a,b,c,d} does > > not > > exist." Turning the error message off does not solve the problem. > > > > The question is how to test if list[[60]] exists without losing control > > if it does not. > > > > Other than by doing the usual arithmetic and test involving Length[list]. > > > > > > It may be that no such test exists, which would also be useful to know. > > > > > > Thanks, > > > > Joe Gwinn > >