Erlang Central

Difference between revisions of "Extracting a Sublist"

From ErlangCentral Wiki

(Correct the description of sublist/3)
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== Problem ==
 
== Problem ==
Given a list, extract a segment specified by a start and an end index (inclusive).  
+
Given a list, extract a segment specified by a start index and an optional length.  
  
 
== Solution ==
 
== Solution ==
Use the lists module sublist/2 or sublist/3 functions. The sublist/2 function takes the first N elements from a list, while the sublist/3 function takes a starting and ending point in the list.  
+
Use the lists module sublist/2 or sublist/3 functions. The sublist/2 function takes the first N elements from a list, while the sublist/3 function takes a starting point in the list and the maximum number of elements to extract.
  
 
<code>
 
<code>
Line 17: Line 17:
 
</code>
 
</code>
  
 
+
Please note that all functions assume the position numbering starts at 1.
 
+
A call to either sublist will a return a newly allocated list holding the elements of the given segment. Please note that all list functions are indexed by 1.  
+
 
+
Note: The sublist function corrresponds to using the slice operator in Python.
+
 
+
 
[[Category:CookBook]][[Category:ListRecipes]]
 
[[Category:CookBook]][[Category:ListRecipes]]

Revision as of 23:47, 11 September 2007

Problem

Given a list, extract a segment specified by a start index and an optional length.

Solution

Use the lists module sublist/2 or sublist/3 functions. The sublist/2 function takes the first N elements from a list, while the sublist/3 function takes a starting point in the list and the maximum number of elements to extract.

% Take the first 5 elements of a list
1> L = [1,2,3,4,5,6,7,8,9,10].
[1,2,3,4,5,6,7,8,9,10]
2> lists:sublist(L,5).
[1,2,3,4,5]

% Take 5 elements from a list, starting from the third position.
3> lists:sublist(L,3,5).
[3,4,5,6,7]

Please note that all functions assume the position numbering starts at 1.