> For the complete documentation index, see [llms.txt](https://ploegert.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ploegert.gitbook.io/til/programmy/elixir/remove-one-list-from-another.md).

# Remove One List From Another

The `--/2` operator allows you to subtract two lists, that is, remove all elements in the *right* list from the *left* list. Each occurrence of an element is removed if there is a corresponding element. If there is no corresponding element, it is ignored.

Here are some examples.

```elixir
> [1, 2, 3] -- [2, 4]
[1, 3]
> [:a, :b, :c, :a, :d, :a] -- [:a, :a]
[:b, :c, :d, :a]
```

This kind of list operation is not particularly efficient, so for large lists it can be quite slow. The following example took several minutes to run.

```elixir
> Enum.into(1..1000000, []) -- Enum.into(2..1000000, [])
[1]
```

To achieve a true set difference, you'll note that the docs for this operator recommend checking out `MapSet.difference/2`.

See `h Kernel.--` for more details.
