# Idiom #136 Remove all occurrences of a value from a list

Remove all occurrences of the value x from list items.
This will alter the original list or return a new list, depending on which is more idiomatic.

``````func removeAll[S ~[]T, T comparable](items *S, x T) {
j := 0
for i, v := range *items {
if v != x {
(*items)[j] = (*items)[i]
j++
}
}
var zero T
for k := j; k < len(*items); k++ {
(*items)[k] = zero
}
*items = (*items)[:j]
}``````
``````j := 0
for i, v := range items {
if v != x {
items[j] = items[i]
j++
}
}
items = items[:j]``````
``````j := 0
for i, v := range items {
if v != x {
items[j] = items[i]
j++
}
}
for k := j; k < len(items); k++ {
items[k] = nil
}
items = items[:j]``````
``import "slices"``
``````items = slices.DeleteFunc(items, func(e T) bool {
return e == x
})``````
``````items2 := make([]T, 0, len(items))
for _, v := range items {
if v != x {
items2 = append(items2, v)
}
}``````
``(remove #{x} items)``
``items.remove(x);``
``using System.Collections.Generic;``
``````items.RemoveAll(r => r == x);
``````
``````import std.algorithm.iteration;
import std.array;``````
``items = items.filter!(a => a != x).array;``
``items.removeWhere((y)=>y==x);``
``Enum.filter(items, fn v -> v != x end)``
``items = pack (items,items != x)``
``filter (/= x) items``
``const newlist = items.filter(y => x !== y)``
``import java.util.Collections;``
``items.removeAll(Collections.singleton(x));``
``(remove-if (lambda (val) (= val x)) items)``
``\$newItems = array_diff(\$items, [\$x]);``
``````var
i: integer;

for i:= items.count-1 downto 0 do
if items[i] = x then
items.delete(i);``````
``my @filtered = grep { \$x ne \$_ } @items;``
``newlist = [item for item in items if item != x]``
``items.delete(x)``
``items.retain(|&item| item != x);``
``items = items.into_iter().filter(|&item| item != x).collect();``
``items.filter(_ != x)``
``items reject: [: y | y = x ]``

programming-idioms.org