diff --git a/for_each.md b/for_each.md new file mode 100644 index 000000000..d4b36999d --- /dev/null +++ b/for_each.md @@ -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 +``` diff --git a/for_each_right.md b/for_each_right.md new file mode 100644 index 000000000..64bb2e075 --- /dev/null +++ b/for_each_right.md @@ -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 +``` diff --git a/frequencies.md b/frequencies.md new file mode 100644 index 000000000..f260e7353 --- /dev/null +++ b/frequencies.md @@ -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 } +``` diff --git a/have_same_contents.md b/have_same_contents.md new file mode 100644 index 000000000..15f8baa57 --- /dev/null +++ b/have_same_contents.md @@ -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 +``` diff --git a/includes_all.md b/includes_all.md new file mode 100644 index 000000000..d2a3eab41 --- /dev/null +++ b/includes_all.md @@ -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 +``` diff --git a/includes_any.md b/includes_any.md new file mode 100644 index 000000000..459953b11 --- /dev/null +++ b/includes_any.md @@ -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 +```