Last modified: Nov 26, 2024 By Alexander Williams

Find Number of Divisible Pairs in Lists Python

Counting divisible pairs in two lists is a common problem in Python programming. This tutorial explores various methods to solve it effectively.

Understanding Divisible Pairs

A pair (a, b) is divisible if the first number is divisible by the second, meaning a % b == 0. This requires two lists to compare.

Using Nested Loops

A straightforward way to count divisible pairs is by using nested loops to compare elements from both lists.

 
# Count divisible pairs using nested loops
def count_divisible_pairs(list1, list2):
    count = 0
    for a in list1:
        for b in list2:
            if b != 0 and a % b == 0:  # Avoid division by zero
                count += 1
    return count

# Example lists
list1 = [10, 20, 30]
list2 = [2, 5, 3]

# Count divisible pairs
result = count_divisible_pairs(list1, list2)
print(result)


5

Using List Comprehension

List comprehensions offer a concise way to achieve the same result while keeping the code readable.

 
# Count divisible pairs with list comprehension
def count_divisible_pairs_comp(list1, list2):
    return sum(1 for a in list1 for b in list2 if b != 0 and a % b == 0)

# Example lists
list1 = [15, 25, 35]
list2 = [5, 7, 3]

# Count divisible pairs
result = count_divisible_pairs_comp(list1, list2)
print(result)


6

Using itertools for All Combinations

The itertools library allows us to find all possible pairs between the two lists and check for divisibility.

 
from itertools import product

# Count divisible pairs using itertools
def count_divisible_pairs_itertools(list1, list2):
    return sum(1 for a, b in product(list1, list2) if b != 0 and a % b == 0)

# Example lists
list1 = [12, 24, 36]
list2 = [6, 12, 18]

# Count divisible pairs
result = count_divisible_pairs_itertools(list1, list2)
print(result)


9

Optimizing for Large Lists

For large lists, avoid nested loops by precomputing properties like multiples or divisors. Using sets or hashmaps can also improve efficiency in certain cases.

Handling Edge Cases

Ensure you consider edge cases like:

  • Empty lists
  • Zeros in the divisor list
  • Negative numbers
 
# Handling edge cases
def count_divisible_pairs_safe(list1, list2):
    if not list1 or not list2:  # Check for empty lists
        return 0
    return sum(1 for a in list1 for b in list2 if b != 0 and a % b == 0)

# Example edge case
list1 = []
list2 = [0, 5, 10]

# Count divisible pairs
result = count_divisible_pairs_safe(list1, list2)
print(result)


0

Related Tutorials

Expand your Python knowledge with related list tutorials:

Conclusion

Counting divisible pairs in Python can be done using multiple approaches, from simple loops to efficient tools like itertools. Choose the method that fits your dataset size and performance needs.

With these techniques, you can solve real-world problems involving divisibility checks in datasets or numerical computations.