Iterate over a list in Python
The List is equivalent to arrays in other languages, with the extra benefit of being dynamic in size.
In Python, the list is a type of container in Data Structures, which is used to store multiple data at the same time. Unlike Sets, lists in Python are ordered and have a definite count. In this article, we will see how to iterate over a list in Python and also Python loop through list of strings.
Python Iterate Over a List
Let’s see all the different ways to iterate over a list in Python and the performance comparison between them.
Iterate over a list using For loop
We can iterate over a list in Python by using a simple For loop.
Python3
list = [ 1 , 3 , 5 , 7 , 9 ]
for i in list :
print (i)
|
Time complexity: O(n) – where n is the number of elements in the list.
Auxiliary space: O(1) – as we are not using any additional space.
Iterate through a list using for loop and range()
In case we want to use the traditional for loop which iterates from number x to number y.
Python3
list = [ 1 , 3 , 5 , 7 , 9 ]
length = len ( list )
for i in range (length):
print ( list [i])
|
Time complexity: O(n), where n is the length of the input list.
Auxiliary space: O(1), which is constant space
Iterate through a List in Python using a while loop
We can also iterate over a Python list using a while loop.
Python3
list = [ 1 , 3 , 5 , 7 , 9 ]
i = 0
while i < len ( list ):
print ( list [i])
i + = 1
|
Time complexity: O(n) where n is the length of the list.
Auxiliary space: O(1) as only a constant amount of extra space is used for variables i and length.
Iterate through a list using list comprehension
We can use list comprehension(possibly the most concrete way) to iterate over a list in Python.
Python3
list = [ 1 , 3 , 5 , 7 , 9 ]
[ print (i) for i in list ]
|
Iterate through a List in Python using enumerate()
If we want to convert the list into an iterable list of tuples (or get the index based on a condition check, for example in linear search, you might need to save the index of minimum element), you can use the enumerate() function.
Python3
list = [ 1 , 3 , 5 , 7 , 9 ]
for i, val in enumerate ( list ):
print (i, "," ,val)
|
Output
0 , 1
1 , 3
2 , 5
3 , 7
4 , 9
Note: Even method 2 can be used to find the index, but method 1 can’t (Unless an extra variable is incremented every iteration) and method 5 gives a concise representation of this indexing.
Iterate through a List in Python using the iter function and the next function
Here is an additional approach using the iter function and the next function:
Python3
list = [ 1 , 3 , 5 , 7 , 9 ]
iterator = iter ( list )
try :
while True :
element = next (iterator)
print (element)
except StopIteration:
pass
|
Time complexity: O(n)
Auxiliary space: O(1)
Iterate over a list in Python using the map() function
Use the map() function to apply a function to each element of a list.
Python3
def print_element(element):
print (element)
my_list = [ 1 , 3 , 5 , 7 , 9 ]
result = map (print_element, my_list)
for _ in result:
pass
|
Time complexity: O(n), where n is the length of the list.
Auxiliary space: O(1)
Python Iterate Over Multiple Lists Using zip() Function
In this example, the zip() function is utilized to concurrently iterate over elements from two lists, list1 and list2, pairing corresponding elements together in tuples for subsequent printing.
Python3
list1 = [ 1 , 2 , 3 ]
list2 = [ 'p' , 'q' , 'r' ]
for i1, i2 in zip (list1, list2):
print (f '{i1} -> {i2}' )
|
Output
1 -> p
2 -> q
3 -> r
Iterate over a list in Python Using NumPy
For very large n-dimensional lists (for example an image array), it is sometimes better to use an external library such as numpy. We can use np. enumerate() to mimic the behavior of enumerating. The extra power of NumPy comes from the fact that we can even control the way to visit the elements (Fortran order rather than C order, say :)) but the one caveat is that the np.nditer treats the array as read-only by default, so one must pass extra flags such as op_flags=[‘readwrite’] for it to be able to modify elements.
Python3
import numpy as geek
a = geek.arange( 9 )
a = a.reshape( 3 , 3 )
for x in geek.nditer(a):
print (x)
|
Output:
0
1
2
3
4
5
6
7
8
Time complexity: O(n)
Auxiliary space: O(1)
Last Updated :
12 Dec, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...