summaryrefslogtreecommitdiff
path: root/list_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'list_utils.py')
-rw-r--r--list_utils.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/list_utils.py b/list_utils.py
index b65ab0d..71630dc 100644
--- a/list_utils.py
+++ b/list_utils.py
@@ -65,7 +65,7 @@ def remove_list_if_one_element(lst: List[Any]) -> Any:
return lst
-def population_counts(lst: List[Any]) -> Mapping[Any, int]:
+def population_counts(lst: List[Any]) -> Counter:
"""
Return a population count mapping for the list (i.e. the keys are
list items and the values are the number of occurrances of that
@@ -200,9 +200,9 @@ def ngrams(lst: Sequence[Any], n):
yield lst[i : i + n]
-def permute(seq: Sequence[Any]):
+def permute(seq: str):
"""
- Returns all permutations of a sequence; takes O(N^2) time.
+ Returns all permutations of a sequence; takes O(N!) time.
>>> for x in permute('cat'):
... print(x)
@@ -217,11 +217,12 @@ def permute(seq: Sequence[Any]):
yield from _permute(seq, "")
-def _permute(seq: Sequence[Any], path):
- if len(seq) == 0:
+def _permute(seq: str, path: str):
+ seq_len = len(seq)
+ if seq_len == 0:
yield path
- for i in range(len(seq)):
+ for i in range(seq_len):
car = seq[i]
left = seq[0:i]
right = seq[i + 1 :]