# How to find a missing number from a list?

```
1 + 2 + 3 + ... + (n - 1) + n = (n) * (n + 1)/2
```

so the missing number is:

```
(a[-1] * (a[-1] + 1))/2 - sum(a)
```

This should work:

```
a = [1, 3, 4, 5, 7, 8, 9, 10]
b = [x for x in range(a[0], a[-1] + 1)]
a = set(a)
print(list(a ^ set(b)))
>>> [2, 6]
```

```
>>> a=[1,2,3,4,5,7,8,9,10]
>>> sum(xrange(a[0],a[-1]+1)) - sum(a)
6
```

alternatively (using the sum of AP series formula)

```
>>> a[-1]*(a[-1] + a[0]) / 2 - sum(a)
6
```

For generic cases when multiple numbers may be missing, you can formulate an O(n) approach.

```
>>> a=[1,2,3,4,7,8,10]
>>> from itertools import imap, chain
>>> from operator import sub
>>> print list(chain.from_iterable((a[i] + d for d in xrange(1, diff))
for i, diff in enumerate(imap(sub, a[1:], a))
if diff > 1))
[5, 6, 9]
```