Python - Unique Values Multiplication

Python lists allow duplicate values, which is useful in most cases. However, sometimes we need to remove duplicates and perform operations on unique values only. In this article, we'll explore multiple approaches to find unique values from a list and calculate their multiplication.

Using set() to Remove Duplicates

The set() function creates an unordered collection with no duplicate elements, making it perfect for extracting unique values ?

def calculate_product(numbers):
    result = 1
    for num in numbers:
        result *= num
    return result

# Original list with duplicates
numbers = [24, 15, 24, 41, 22, 11, 11, 51]

# Get unique values using set
unique_numbers = list(set(numbers))

# Calculate product
product = calculate_product(unique_numbers)

print("Original list:", numbers)
print("Unique values:", unique_numbers)
print("Product of unique values:", product)
Original list: [24, 15, 24, 41, 22, 11, 11, 51]
Unique values: [41, 11, 15, 51, 22, 24]
Product of unique values: 182167920

Using List Iteration

This approach manually filters unique elements by checking if each item already exists in our result list ?

def calculate_product(numbers):
    result = 1
    for num in numbers:
        result *= num
    return result

# Original list
numbers = [24, 15, 24, 41, 22, 11, 11, 51]

# Extract unique values manually
unique_numbers = []
for num in numbers:
    if num not in unique_numbers:
        unique_numbers.append(num)

product = calculate_product(unique_numbers)

print("Original list:", numbers)
print("Unique values:", unique_numbers)
print("Product of unique values:", product)
Original list: [24, 15, 24, 41, 22, 11, 11, 51]
Unique values: [24, 15, 41, 22, 11, 51]
Product of unique values: 182167920

Using List Comprehension

List comprehension provides a concise way to create the unique list by checking if each element hasn't appeared before ?

def calculate_product(numbers):
    result = 1
    for num in numbers:
        result *= num
    return result

# Original list
numbers = [24, 15, 24, 41, 22, 11, 11, 51]

# Extract unique values using list comprehension
unique_numbers = [item for index, item in enumerate(numbers) if item not in numbers[:index]]

product = calculate_product(unique_numbers)

print("Original list:", numbers)
print("Unique values:", unique_numbers)
print("Product of unique values:", product)
Original list: [24, 15, 24, 41, 22, 11, 11, 51]
Unique values: [24, 15, 41, 22, 11, 51]
Product of unique values: 182167920

Using collections.Counter

The Counter class counts occurrences of each element. We can use its keys to get unique values ?

from collections import Counter

def calculate_product(numbers):
    result = 1
    for num in numbers:
        result *= num
    return result

# Original list
numbers = [24, 15, 24, 41, 22, 11, 11, 51]

# Count occurrences
counter_dict = Counter(numbers)

# Extract unique values from keys
unique_numbers = list(counter_dict.keys())

product = calculate_product(unique_numbers)

print("Original list:", numbers)
print("Counter dictionary:", counter_dict)
print("Unique values:", unique_numbers)
print("Product of unique values:", product)
Original list: [24, 15, 24, 41, 22, 11, 11, 51]
Counter dictionary: Counter({24: 2, 11: 2, 15: 1, 41: 1, 22: 1, 51: 1})
Unique values: [24, 15, 41, 22, 11, 51]
Product of unique values: 182167920

Using Dictionary Tracking

This method tracks elements using a dictionary while calculating the product in a single pass ?

def calculate_unique_product(numbers):
    result = 1
    seen = {}
    
    for num in numbers:
        if num not in seen:
            seen[num] = True
            result *= num
    
    return result

# Original list
numbers = [24, 15, 24, 41, 22, 11, 11, 51]

# Calculate product directly
product = calculate_unique_product(numbers)

print("Original list:", numbers)
print("Product of unique values:", product)
Original list: [24, 15, 24, 41, 22, 11, 11, 51]
Product of unique values: 182167920

Using NumPy

NumPy provides efficient functions for finding unique values and calculating products ?

import numpy as np

# Original list
numbers = [24, 15, 24, 41, 22, 11, 11, 51]

# Get unique values (sorted)
unique_numbers = np.unique(numbers)

# Calculate product
product = np.prod(unique_numbers)

print("Original list:", numbers)
print("Unique values (NumPy):", unique_numbers)
print("Product using NumPy:", product)
Original list: [24, 15, 24, 41, 22, 11, 11, 51]
Unique values (NumPy): [11 15 22 24 41 51]
Product using NumPy: 182167920

Comparison of Methods

Method Time Complexity Space Complexity Preserves Order
set() O(n) O(n) No
List iteration O(n²) O(n) Yes
List comprehension O(n²) O(n) Yes
Counter O(n) O(n) Yes (insertion order)
Dictionary tracking O(n) O(n) Most efficient
NumPy O(n log n) O(n) No (sorted)

Conclusion

For performance-critical applications, use the dictionary tracking method or set() approach. For data science workflows, NumPy provides clean, readable code. Choose the method based on whether you need to preserve order and your performance requirements.

Updated on: 2026-03-27T15:58:22+05:30

240 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements