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
Finding the First Even Number in a List using Python
Finding the first even number in a list is a common programming task in Python. This can be accomplished using various approaches including the next() function, recursion, filter() with lambda, and simple loops.
Given a list like [21, 33, 12, 11, 61, 78], the first even number would be 12 since it's the first number divisible by 2.
Syntax
The key functions used in these examples:
-
next()Returns the next item from an iterator -
filter()Filters elements based on a condition -
lambdaCreates anonymous functions for short operations
Using next() with Generator Expression
The most efficient approach uses next() with a generator expression to find the first even number ?
def find_first_even(lst):
return next((i for i in lst if i % 2 == 0), -1)
numbers = [5, 32, 4, 7, 3, 2]
result = find_first_even(numbers)
print("First even number from the list:", result)
First even number from the list: 32
Using Simple Loop
A straightforward approach using a for loop to iterate through the list ?
def find_first_even(numbers):
for number in numbers:
if number % 2 == 0:
return number
return None
int_list = [35, 30, 11, 4, 17]
result = find_first_even(int_list)
if result is not None:
print(f"The first even number is: {result}")
else:
print("No even number found")
The first even number is: 30
Using filter() and lambda
This approach filters all even numbers and takes the first one ?
num_list = [73, 67, 71, 83, 10, 24]
print("Original list:", num_list)
# Filter even numbers and get the first one
even_numbers = list(filter(lambda x: x % 2 == 0, num_list))
first_even = even_numbers[0] if even_numbers else None
print("First even number:", first_even)
Original list: [73, 67, 71, 83, 10, 24] First even number: 10
Using Recursion
A recursive approach that checks each element until an even number is found ?
def find_first_even_recursive(lst, index=0):
if index >= len(lst):
return -1
if lst[index] % 2 == 0:
return lst[index]
return find_first_even_recursive(lst, index + 1)
numbers = [53, 81, 30, 2, 45, 76, 21]
result = find_first_even_recursive(numbers)
print("First even number using recursion:", result)
First even number using recursion: 30
Comparison
| Method | Performance | Best For |
|---|---|---|
next() with generator |
Excellent | Most efficient, stops at first match |
| Simple loop | Good | Easy to understand and modify |
filter() |
Poor | When you need all even numbers |
| Recursion | Fair | Academic purposes, can cause stack overflow |
Conclusion
The next() function with generator expression is the most efficient method as it stops immediately when the first even number is found. Use simple loops for better readability, and avoid filter() for finding just the first element since it processes the entire list.
