Python - Check if two lists have any element in common

When working with Python lists, we often need to check if two lists share any common elements. This is useful for data comparison, finding overlaps, or validating data consistency. Python provides several efficient approaches to solve this problem.

Using the 'in' Operator with Loops

The most straightforward approach uses nested loops to check each element of the first list against all elements in the second list ?

# Sample lists for comparison
fruits = ['apple', 'banana', 'orange', 'mango']
colors = ['red', 'yellow', 'orange', 'blue']
numbers = [1, 2, 3, 4, 5]

def has_common_elements(list1, list2):
    for item in list1:
        if item in list2:
            return True
    return False

# Testing the function
print("Fruits and colors:", has_common_elements(fruits, colors))
print("Fruits and numbers:", has_common_elements(fruits, numbers))
Fruits and colors: True
Fruits and numbers: False

Using Sets for Intersection

Converting lists to sets and using the intersection operator (&) provides a more efficient solution ?

def common_elements_with_sets(list1, list2):
    set1 = set(list1)
    set2 = set(list2)
    common = set1 & set2
    
    if common:
        return f"Common elements found: {common}"
    else:
        return "No common elements"

# Testing with sample data
fruits = ['apple', 'banana', 'orange', 'mango']
colors = ['red', 'yellow', 'orange', 'blue']
vegetables = ['carrot', 'potato', 'onion']

print(common_elements_with_sets(fruits, colors))
print(common_elements_with_sets(fruits, vegetables))
Common elements found: {'orange'}
No common elements

Using any() Function

The any() function provides the most concise and Pythonic solution ?

def check_common_any(list1, list2):
    return any(item in list2 for item in list1)

# Testing the function
fruits = ['apple', 'banana', 'orange', 'mango']
colors = ['red', 'yellow', 'orange', 'blue']
numbers = [1, 2, 3, 4, 5]

print("Fruits and colors have common elements:", check_common_any(fruits, colors))
print("Fruits and numbers have common elements:", check_common_any(fruits, numbers))
Fruits and colors have common elements: True
Fruits and numbers have common elements: False

Performance Comparison

Method Time Complexity Best For
Loop with 'in' O(n × m) Small lists, readable code
Set intersection O(n + m) Large lists, finding actual common elements
any() function O(n × m) Concise code, early termination

Complete Example

# Comprehensive comparison of all methods
def compare_methods():
    list1 = ['python', 'java', 'javascript', 'go']
    list2 = ['ruby', 'python', 'swift', 'kotlin']
    list3 = [1, 2, 3, 4]
    
    print("Method 1 - Loop with 'in':")
    print(f"  list1 & list2: {has_common_elements(list1, list2)}")
    print(f"  list1 & list3: {has_common_elements(list1, list3)}")
    
    print("\nMethod 2 - Set intersection:")
    print(f"  list1 & list2: {common_elements_with_sets(list1, list2)}")
    print(f"  list1 & list3: {common_elements_with_sets(list1, list3)}")
    
    print("\nMethod 3 - any() function:")
    print(f"  list1 & list2: {check_common_any(list1, list2)}")
    print(f"  list1 & list3: {check_common_any(list1, list3)}")

compare_methods()
Method 1 - Loop with 'in':
  list1 & list2: True
  list1 & list3: False

Method 2 - Set intersection:
  list1 & list2: Common elements found: {'python'}
  list1 & list3: No common elements

Method 3 - any() function:
  list1 & list2: True
  list1 & list3: False

Conclusion

Use any() for the most concise solution when you only need a boolean result. Use set intersection when you need to identify the actual common elements. For large datasets, set operations are generally more efficient than nested loops.

Updated on: 2026-03-15T17:14:34+05:30

4K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements