`all()`

and `any()`

are built-in functions that help analyze python iterables.

##
`all()`

`all()`

returns `True`

if **all** elements of the iterable are true (or if the iterable is empty).

```
Python 3.7.4
>>> x = [2, 3, 5, 1]
>>> all(x)
True
>>> x = [2, 3, 5, 0]
>>> all(x)
False
>>> x = []
>>> all(x)
True
```

In the second instance, `False`

is returned because of the `0`

in the list. Note that this would not be the case if the `0`

was a string.

```
>>> x = [2, 3, 5, '0']
>>> all(x)
True
```

For checking dictionary values,

```
>>> x = {'item1': 'pen', 'item2': 'paper', 'item3': 'book'}
>>> all(x.values())
True
>>> x = {'item1': 'pen', 'item2': 'paper', 'item3': False}
>>> all(x.values())
False
>>> x = {}
>>> all(x)
True
```

##
`any()`

`any()`

returns `True`

if **any** element of the iterable is true. If the iterable is empty, it returns `False`

.

```
>>> x = [2, 3, 5, 1]
>>> any(x)
True
>>> x = [2, 3, 5, 0]
>>> any(x)
True
>>> x = [0, 0, 0, '0']
>>> any(x)
True
>>> x = [0, 0, 0, 0]
>>> any(x)
False
>>> x = []
>>> any(x)
False
```

It also works the same for dictionaries:

```
>>> x = {'item1': 'pen', 'item2': 'paper', 'item3': 'book'}
>>> any(x)
True
>>> x = {'item1': 'pen', 'item2': 'paper', 'item3': False}
>>> any(x)
True
>>> x = {}
>>> any(x)
False
```

## Discussion (1)

Nice post! Worth that they will short circuit. Meaning

`all`

will return as soon as it sees a`False`

and`any`

will exit as soon as it sees`True`

.So if you’re going to have a bunch of calculated values you should use a generator of some sort rather than building the list in advance.