How to compare two lists in Python?

The list in Python is a collection of items that we often need to compare. Python provides several methods to compare two lists, each with different behaviors regarding element order and frequency.

Using == Operator (Order Matters)

The simplest method compares lists element by element in the same positions. This method considers both values and order ?

def compare_lists(list1, list2):
    if list1 == list2:
        return "Equal"
    else:
        return "Not equal"

# Same elements, same order
numbers1 = [1, 2, 3]
numbers2 = [1, 2, 3]
print("Same order:", compare_lists(numbers1, numbers2))

# Same elements, different order
numbers3 = [1, 2, 3]
numbers4 = [2, 1, 3]
print("Different order:", compare_lists(numbers3, numbers4))
Same order: Equal
Different order: Not equal

Using sort() and == Operator (Order Ignored)

This method sorts both lists first, then compares them. It ignores the original order of elements ?

def compare_lists_sorted(list1, list2):
    list1.sort()
    list2.sort()
    if list1 == list2:
        return "Equal"
    else:
        return "Not equal"

numbers1 = [1, 2, 3]
numbers2 = [2, 1, 3]
print("After sorting:", compare_lists_sorted(numbers1, numbers2))

numbers3 = [1, 2, 3]
numbers4 = [1, 2, 4]
print("Different elements:", compare_lists_sorted(numbers3, numbers4))
After sorting: Equal
Different elements: Not equal

Using collections.Counter() (Frequency Comparison)

This method compares the frequency of each element, ignoring order but considering duplicates ?

import collections

def compare_lists_counter(list1, list2):
    if collections.Counter(list1) == collections.Counter(list2):
        return "Equal"
    else:
        return "Not equal"

# Same elements, different order
numbers1 = [1, 2, 3, 2]
numbers2 = [2, 1, 3, 2]
print("Same frequency:", compare_lists_counter(numbers1, numbers2))

# Different frequencies
numbers3 = [1, 2, 2, 3]
numbers4 = [1, 2, 3, 3]
print("Different frequency:", compare_lists_counter(numbers3, numbers4))
Same frequency: Equal
Different frequency: Not equal

Using zip() and sum() (Element-wise Comparison)

This method compares elements at corresponding positions and counts matches. It considers both order and length ?

def compare_lists_zip(list1, list2):
    if len(list1) == len(list2) and len(list1) == sum([1 for i, j in zip(list1, list2) if i == j]):
        return "Equal"
    else:
        return "Not equal"

numbers1 = [1, 2, 3]
numbers2 = [2, 1, 3]
print("Different order:", compare_lists_zip(numbers1, numbers2))

numbers3 = [1, 2, 3]
numbers4 = [1, 2, 3]
print("Same order:", compare_lists_zip(numbers3, numbers4))
Different order: Not equal
Same order: Equal

Comparison Summary

Method Order Matters? Considers Frequency? Best For
== operator Yes Yes Exact list matching
sort() + == No Yes Same elements, any order
Counter() No Yes Frequency-based comparison
zip() + sum() Yes Yes Position-wise comparison

Conclusion

Use the == operator for exact list matching, Counter() for frequency-based comparison ignoring order, and sort() method when you need to compare elements regardless of their position. Choose the method based on whether order and element frequency matter in your specific use case.

Updated on: 2026-03-25T17:02:13+05:30

71K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements