Lists¶
This page documents the List
type.
General concepts¶
A list is an ordered collection of values, which may be of different types. Elements in a list can be added and removed, and the list grows dynamically to accomodate new incoming elements. Indices in a list start at 1 and can be negative: -1 represents the last element, -2 the second-to-last element, and so on.
Methods¶
-
class
List
¶
-
append
(elem[, ...])¶
Appends one or more elements at the end of the list.
-
clear
()¶
Empty the content of the list. After this method is called, a call to is_empty()
will return true
.
-
clone
()¶
Returns a shallow copy of the list.
-
concat
(arg[, ...])¶
Returns a new list, which is the concatenation of this list with one or more lists.
-
contains
(elem)¶
Returns true
if elem is in the list and false
otherwise.
-
every
(callback)¶
Returns true
if all the elements in the list satisfy the condition callback
, which must be a function that takes a value as input and
returns a Boolean
.
function greater_than_10(x)
return x > 10
end
var lst = [11, 12, 13]
# Prints "true"
print(lst.every(greater_than_10))
See also: some()
-
filter
(callback)¶
Returns a new list containing the elements that satisfy the condition callback
, which must be a function that takes a value as input and
returns a Boolean
.
function is_odd(x)
return x % 2 == 1
end
var lst = [1, 2, 3, 4, 5, 6]
print(lst.filter(is_odd)) # prints [1, 3, 5]
See also: map()
-
find
(elem[, i])¶
Returns the index of elem
in the list, starting the search at index i
(1 by default). If the element is not found,
0 is returned.
Note: If the list is sorted, you can use sorted_find()
instead, which is a little faster since it can take advantage of the fact
that the order of the elements is known.
See also: find_back()
, sorted_find()
-
find_back
(elem[, i])¶
Returns the index of elem
in the list, starting the search from the end at index i
(-1 by default). If the element is not found,
0 is returned.
See also: find()
-
includes
(other)¶
Returns true
if the elements in other
are a subsequence this list. Both lists must be sorted, but the elements in other
don’t need
to be a contiguous sequence.
-
insert
(i, elem)¶
Inserts the element elem
at index i
.
See also: sorted_insert()
-
intersect
(other)¶
Returns a new list which contains all the elements that are in this list and in other
.
See also:: unite()
, subtract()
-
is_empty
()¶
Returns true
if the list doesn’t contain any element, and false
if it does.
-
is_sorted
()¶
-
join
(sep)¶
Returns a string in which all elements have been joined with the sep
separator.
-
map
(callback)¶
Returns a new list in which callback
has been applied to each element in the original list. callback
must be a function that takes a value
and returns a value.
function upper(s)
return s.to_upper()
end
var lst = ["a", "b", "c"]
print(lst.map(upper))
See also: filter()
-
pop
()¶
Removes the last element from the list and returns it.
See also: shift()
-
prepend
(elem[, ...])¶
Inserts one or more elements at the beginning of the list.
-
reduce
(callback)¶
Reduces the list to a single value, by applying callback
to each element in the list from beginning to end. callback
must be a function which takes two
arguments (an accumulator and a value) and returns a single value.
function callback(accumulator, value)
return accumulator + value
end
var lst = [1, 2, 3, 4]
print(lst.reduce(callback)) # prints 10
See also: reduce_back()
-
reduce_back
(callback)¶
Reduces the list to a single value, by applying callback
to each element in the list from end to beginning. callback
must be a function which takes two
arguments (an accumulator and a value) and returns a single value.
See also: reduce()
-
remove
(value)¶
Removes all the elements in the list that are equal to value
.
See also: remove_at()
-
remove
(i)
Remove the element at index i
.
See also: remove()
-
reverse
()¶
Reverses the order of the elements in the list. If the elements are not sorted, the result is undefined. (Use sort()
to sort the elements.)
See also: is_sorted()
, sort()
-
sample
(n)¶
Returns a list containing n
elements from the list drawn at random.
-
shift
()¶
Removes the first element from the list and returns it.
See also: pop()
..method:: shuffle()
Randomizes the order of elements in the list.
-
slice
(from, to)¶
Returns a new list which contains the elements of the original list starting at index from
and ending at index to
(inclusive).
-
some
(callback)¶
Returns true
if at least one element in the list satisfies the condition callback
, which must be a function that takes a value as input and
returns a Boolean
.
function less_than_10(x)
return x < 10
end
var lst = [9, 11, 12, 13]
# Prints "true"
print(lst.every(greater_than_10))
See also: every()
-
sort
()¶
Sorts the elements in the list in increasing order. The elements should be of the same type.
See also: is_sorted()
, reverse()
-
sorted_find
(value)¶
Finds the index of value
in a sorted list. If value
is not in the list, 0 is returned. Note that if the list is not sorted, the result of this operation is undefined.
This method is faster than find()
on average for sorted lists.
See also: find()
-
sorted_insert
(value)¶
Inserts value
after the first element that is not less than elem. If the list is not sorted, the result of this operation is undefined.
See also: insert()
-
subtract
(other)¶
Returns a new list which contains all the elements that are in this list but not in other
.
See also:: intersect()
, unite()
-
to_string
()¶
Returns a string representation of the list.
-
unite
(other)¶
Returns a new list which contains all the elements that are either in this list or in other
(or in both).
See also:: intersect()
, subtract()