Skip to content

Commit 821cc9e

Browse files
committed
Simplify_and_document_prune_with_membership_and_multiplicity_checks
1 parent e2a78d4 commit 821cc9e

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

machine_learning/apriori_algorithm.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,16 @@ def prune(itemset: list, candidates: list, length: int) -> list:
4545
>>> prune(itemset, candidates, 3)
4646
[]
4747
"""
48+
# Use a set for O(1) membership and a Counter for multiplicity checks to
49+
# preserve robustness for edge cases and match existing doctest behavior.
50+
itemset_set = {tuple(item) for item in itemset}
4851
itemset_counter = Counter(tuple(item) for item in itemset)
4952
pruned = []
5053
for candidate in candidates:
5154
is_subsequence = True
5255
for item in candidate:
5356
item_tuple = tuple(item)
54-
if (
55-
item_tuple not in itemset_counter
56-
or itemset_counter[item_tuple] < length - 1
57-
):
57+
if item_tuple not in itemset_set or itemset_counter[item_tuple] < length - 1:
5858
is_subsequence = False
5959
break
6060
if is_subsequence:

0 commit comments

Comments
 (0)