Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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.
