Merge pull request #188 from 30-seconds/new-list-snippets

New list snippets
This commit is contained in:
Angelos Chalaris
2020-03-14 11:46:30 +02:00
committed by GitHub
6 changed files with 122 additions and 0 deletions

18
for_each.md Normal file
View File

@ -0,0 +1,18 @@
---
title: for_each
tags: list,beginner
---
Executes the provided function once for each list element.
Use a `for` loop to execute `fn` for each element in `itr`.
```py
def for_each(itr, fn):
for el in itr:
fn(el)
```
```py
for_each([1, 2, 3], print) # 1 2 3
```

18
for_each_right.md Normal file
View File

@ -0,0 +1,18 @@
---
title: for_each_right
tags: list,beginner
---
Executes the provided function once for each list element, starting from the list's last element.
Use a `for` loop in combination with slice notation to execute `fn` for each element in `itr`, starting from the last one.
```py
def for_each_right(itr, fn):
for el in itr[::-1]:
fn(el)
```
```py
for_each_right([1, 2, 3], print) # 3 2 1
```

22
frequencies.md Normal file
View File

@ -0,0 +1,22 @@
---
title: frequencies
tags: list,intermediate
---
Returns a dictionary with the unique values of a list as keys and their frequencies as the values.
Use a `for` loop to populate a dictionary, `f`, with the unique values in `lst` as keys, adding to existing keys every time the same value is encountered.
```py
from functools import reduce
def frequencies(lst):
f = {}
for x in lst:
f[x] = f[x] + 1 if x in f else 1
return f
```
```py
frequencies(['a', 'b', 'a', 'c', 'a', 'a', 'b']) # { 'a': 4, 'b': 2, 'c': 1 }
```

22
have_same_contents.md Normal file
View File

@ -0,0 +1,22 @@
---
title: have_same_contents
tags: list,intermediate
---
Returns `True` if two lists contain the same elements regardless of order, `False` otherwise.
Use `set()` on the combination of both lists to find the unique values.
Iterate over them with a `for` loop comparing the `count()` of each unique value in each list.
Return `False` if the counts do not match for any element, `True` otherwise.
```py
def have_same_contents(a, b):
for v in set(a + b):
if a.count(v) != b.count(v):
return False
return True
```
```py
have_same_contents([1, 2, 4], [2, 4, 1]) # True
```

21
includes_all.md Normal file
View File

@ -0,0 +1,21 @@
---
title: includes_all
tags: utility,intermediate
---
Returns `True` if all the elements in `values` are included in `lst`, `False` otherwise.
Check if every value in `values` is contained in `lst` using a `for` loop, returning `False` if any one value is not found, `True` otherwise.
```py
def includes_all(lst, values):
for v in values:
if v not in lst:
return False
return True
```
```py
includes_all([1, 2, 3, 4], [1, 4]) # True
includes_all([1, 2, 3, 4], [1, 5]) # False
```

21
includes_any.md Normal file
View File

@ -0,0 +1,21 @@
---
title: includes_any
tags: list,intermediate
---
Returns `True` if any element in `values` is included in `lst`, `False` otherwise.
Check if any value in `values` is contained in `lst` using a `for` loop, returning `True` if any one value is found, `False` otherwise.
```py
def includes_any(lst, values):
for v in values:
if v in lst:
return True
return False
```
```py
includes_any([1, 2, 3, 4], [2, 9]) # True
includes_any([1, 2, 3, 4], [8, 9]) # False
```