Function Repository Resource:

ListBuilder

Source Notebook

Generate a list with values satisfying a given condition

Contributed by: Nik Murzin

ResourceFunction["ListBuilder"][expr,{i,imax},test]

generates a list of the values of expr when i runs from 1 to imax satisfying the test condition.

ResourceFunction["ListBuilder"][expr,{i,imin,imax},test]

starts with i=imin.

ResourceFunction["ListBuilder"][expr,{i,imin,imax,di},test]

uses steps di.

ResourceFunction["ListBuilder"][expr,{i,{i1,i2,}},test]

uses the successive values i1,i2,.

ResourceFunction["ListBuilder"][expr,{i,imin,imax},{j,jmin,jmax},,test]

uses multiple nested iterators.

ResourceFunction["ListBuilder"][expr,iter1,iter2,]

gives a flattened version of Table[expr,iter1,iter2,].

Details

ResourceFunction["ListBuilder"] is commonly known as list comprehension.
ResourceFunction["ListBuilder"] uses the standard Wolfram Language iteration specification.
ResourceFunction["ListBuilder"] has the attribute HoldAll, similar to Table.

Examples

Basic Examples (5) 

A list of odd integers up-to 10:

In[1]:=
ResourceFunction["ListBuilder"][n, {n, 10}, OddQ[n]]
Out[1]=

A list of even squares from 0 to 100:

In[2]:=
ResourceFunction["ListBuilder"][n^2, {n, 0, 100}, EvenQ[n]]
Out[2]=

A list of absolute values of even numbers between -100 and 100 divisible by 3:

In[3]:=
ResourceFunction["ListBuilder"][Abs[n], {n, -100, 100, 2}, Divisible[n, 3]]
Out[3]=

Iterate over an explicit list of values:

In[4]:=
ResourceFunction["ListBuilder"][n, {n, Range[10]}, EvenQ[n]]
Out[4]=

A list with nested iterators and a condition:

In[5]:=
ResourceFunction["ListBuilder"][{n, m}, {n, 10}, {m, n}, n + m == 6]
Out[5]=

Properties and Relations (1) 

ListBuilder with no test condition is equivalent to Flatten[Table[expr,]] or ResourceFunction["FlatTable"][expr,]:

In[6]:=
ResourceFunction["ListBuilder"][10 i + j, {i, 4}, {j, 3}]
Out[6]=
In[7]:=
Flatten@Table[10 i + j, {i, 4}, {j, 3}]
Out[7]=
In[8]:=
ResourceFunction["FlatTable"][10 i + j, {i, 4}, {j, 3}]
Out[8]=

Requirements

Wolfram Language 14.0 (January 2024) or above

Version History

  • 1.0.0 – 14 February 2025

Source Metadata

Related Resources

License Information