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.

Updated on: 2026-03-15T18:27:56+05:30

673 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements