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
Find Min-Max in heterogeneous list in Python
A Python list can contain both strings and numbers, creating what we call a heterogeneous list. In this article, we will explore different methods to find the minimum and maximum numeric values from such mixed-type lists.
Finding Minimum Value
We can use the isinstance() function to filter only numeric values and then apply the min() function to find the smallest number.
Example
data = [12, 'Sun', 39, 5, 'Wed', 'Thu']
# Given list
print("The Given list:", data)
# Filter integers and find minimum
res = min(i for i in data if isinstance(i, int))
# Result
print("The minimum value in list is:", res)
The Given list: [12, 'Sun', 39, 5, 'Wed', 'Thu'] The minimum value in list is: 5
Finding Maximum Value
For finding the maximum value, we can use a similar filtering approach or utilize a lambda function with the max() function.
Using Generator Expression
data = [12, 'Sun', 39, 5, 'Wed', 'Thu']
# Given list
print("The Given list:", data)
# Filter integers and find maximum
res = max(i for i in data if isinstance(i, int))
# Result
print("The maximum value in list is:", res)
The Given list: [12, 'Sun', 39, 5, 'Wed', 'Thu'] The maximum value in list is: 39
Using Lambda Function
data = [12, 'Sun', 39, 5, 'Wed', 'Thu']
# Given list
print("The Given list:", data)
# Use max with lambda
res = max(data, key=lambda i: (isinstance(i, int), i))
# Result
print("The maximum value in list is:", res)
The Given list: [12, 'Sun', 39, 5, 'Wed', 'Thu'] The maximum value in list is: 39
Finding Both Min and Max
We can combine both operations to find minimum and maximum values in a single pass ?
data = [12, 'Sun', 39, 5, 'Wed', 'Thu', 2.5, 45]
# Filter numeric values (int and float)
numeric_values = [i for i in data if isinstance(i, (int, float))]
print("Original list:", data)
print("Numeric values:", numeric_values)
print("Minimum value:", min(numeric_values))
print("Maximum value:", max(numeric_values))
Original list: [12, 'Sun', 39, 5, 'Wed', 'Thu', 2.5, 45] Numeric values: [12, 39, 5, 2.5, 45] Minimum value: 2.5 Maximum value: 45
Conclusion
Use generator expressions with isinstance() to filter numeric values from heterogeneous lists. This approach works for both integers and floats, making it versatile for mixed-type data processing.
