Function Repository Resource:

BisectList

Source Notebook

Make a pair of lists consisting of alternate terms from the original list

Contributed by: George Beck

ResourceFunction["BisectList"][{a1,a2,a3,a4,a5,a6,}]

makes the list {{a1,a3,a5},{a2,a4,a6,}}.

Details and Options

ResourceFunction["BisectList"] is a partial inverse function of Riffle.
The two sublists have equal lengths.
If the input list has an odd number of terms, the last term is ignored.
The argument can be an expression other than a list.

Examples

Basic Examples (3) 

The lists being riffled have the same length:

In[1]:=
Riffle[{1, 2, 3}, 100 {1, 2, 3}]
Out[1]=

BisectList gives back the sublists:

In[2]:=
ResourceFunction["BisectList"]@%
Out[2]=

Here, the riffled lists have different lengths:

In[3]:=
Riffle[{1, 2, 3, 4}, 100 {1, 2, 3}]
Out[3]=

BisectList ignores the last term:

In[4]:=
ResourceFunction["BisectList"]@%
Out[4]=

Here the head of the expression is not List:

In[5]:=
ResourceFunction["BisectList"][fgh /@ Range[7]]
Out[5]=

Scope (3) 

Add consecutive pairs of a list:

In[6]:=
Total@ResourceFunction["BisectList"]@Range[20]
Out[6]=

Apply BisectList twice:

In[7]:=
ResourceFunction["BisectList"] /@ ResourceFunction["BisectList"]@Range[32]
Out[7]=

Pull out the interleaved subsequences, making them both positive:

In[8]:=
(-1)^Range[20] RandomInteger[{1, 9}, 20]
Out[8]=
In[9]:=
{-1, 1} ResourceFunction["BisectList"][%]
Out[9]=

Publisher

George Beck

Requirements

Wolfram Language 11.3 (March 2018) or above

Version History

  • 1.0.0 – 01 February 2019

License Information