Function Repository Resource:

 PreviousNextElement

Source Notebook

Get the elements that appear before and after a given value in a list

Contributed by: Andy Hunt

ResourceFunction["PreviousNextElement"][element,{e1,e2,…}]

returns the elements that appear before and after element in {e1,e2,…}.

Details and Options

If the element is not found, a list containing Missing["NotFound"] is returned.
If the element is at the beginning or end of the list, None is returned as the corresponding previous or next element.
If element occurs more than one in {e1,e2,…}, the first instance is used.
By default, searches will not wrap around the list. With the setting WrapAround → True, searches will wrap around the list.

Examples

Basic Examples (2) 

Find previous/next elements in a list of integers:

In[1]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][3, {1, 2, 3, 4}]
Out[1]=

Find previous/next elements in a list of strings:

In[2]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"]["Dogs", {"Birds", "Cats", "Dogs", "Fish"}]
Out[2]=

Scope (2) 

Elements do not have to be numbers or strings:

In[3]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][
 "George" -> 3, {"John" -> 1, "Paul" -> 2, "George" -> 3, "Ringo" -> 4}]
Out[3]=

If the element doesn't exist, Missing["NotFound"] is returned:

In[4]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][1963, {1, 2, 3, 4}]
Out[4]=

Options (2) 

By default, searches will not wrap around the list:

In[5]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][4, {1, 2, 3, 4}]
Out[5]=

With the option setting WrapAround→True, searches will wrap around the list:

In[6]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][4, {1, 2, 3, 4}, WrapAround -> True]
Out[6]=

Possible Issues (2) 

If elements within the list are not unique, the first match is returned:

In[7]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][0, {1, 0, 1, 0, 0, 1, 0, 0, 0, 1}]
Out[7]=
In[8]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][1, {1, 0, 1, 0, 0, 1, 0, 0, 0, 1}]
Out[8]=

Matches are found after evaluation:

In[9]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][{2 - a + b}, {{b + 3}, {b + 2 - a}, {a + 3*1}}]
Out[9]=

Neat Examples (3) 

Which two U.S. states is Illinois between alphabetically:

In[10]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][
 Entity["AdministrativeDivision", {"Illinois", "UnitedStates"}], EntityList[EntityClass["AdministrativeDivision", "AllUSStatesPlusDC"]]]
Out[10]=

Between which two planets is the Earth when listed in order of increasing radius:

In[11]:=
planetsByRadius = Keys@SortBy[
   PlanetData[PlanetData[], "Radius", "EntityAssociation"], # &]
Out[11]=
In[12]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][Entity["Planet", "Earth"], planetsByRadius]
Out[12]=

Find phrases within text:

In[13]:=
address = ResourceData["Gettysburg Address"];
wordList = Partition[StringSplit[address, WhitespaceCharacter ..], 3];
In[14]:=
ResourceFunction[
 "PreviousNextElement", ResourceSystemBase -> "https://www.wolframcloud.com/obj/resourcesystem/api/1.0"][{"that", "all", "men"}, wordList]
Out[15]=

Publisher

Andy Hunt

Requirements

Wolfram Language 13.0 (December 2021) or above

Version History

  • 1.0.1 – 22 September 2026
  • 1.0.0 – 31 May 2023

Related Resources

License Information