Discover Python's versatile ways to iterate over lists, from basic loops to advanced comprehensions. Master these techniques to write cleaner and more efficient code!
For
simple for
This will loop through the list and each element of the list will be available as a variable in every iteration. This is widely used when there is a need to go over all the elements of the list.
operating_systems = ["windows", "mac", "linux"]
for os in operating_systems:
print(os)`
# Output
windows
mac
linux
for and range
When there is need for accessing based on index and index value is required.
operating_systems = ["windows", "mac", "linux"]
for i in range(len(operating_systems)):
print(f"Index {i}: {operating_systems[i]}")
# Output
Index 0: windows
Index 1: mac
Index 2: linux
for and enumerate
This is an elegant way, if you need both index and the value
operating_systems = ["windows", "mac", "linux"]
for index, os in enumerate(operating_systems):
print(f"Index is {index} and value is {os}")
# Output
Index is 0 and value is windows
Index is 1 and value is mac
Index is 2 and value is linux
While
simple while
operating_systems = ["windows", "mac", "linux"]
i = 0 # Inital condition, required to start
while i < len(operating_systems):
print(f"While looping {i} got the value {operating_systems[i]}")
i = i + 1 # This is very important, dont forget about infinite loops
# Output
While looping 0 got the value windows
While looping 1 got the value mac
While looping 2 got the value linux
Iterator
Gives fine control over when to move the iterator forward, though we have to rely on the StopIteration to check if the end is reached.
operating_systems = ["windows", "mac", "linux"]
iterator = iter(operating_systems)
while True:
try:
os = next(iterator)
print(f"Consumed form iterator {os}")
except StopIteration:
print("Consumed all from iterator")
break
# Output
Consumed form iterator windows
Consumed form iterator mac
Consumed form iterator linux
Consumed all from iterator
# Hack to avoid StopIteration
iterator = iter(operating_systems)
end_of_list = object()
reached_end = False
while not reached_end:
os = next(iterator, end_of_list)# a predefined object as end of the list
if os != end_of_list:
print(os)
else:
reached_end = True
List comprehension
When transformation is required
operating_systems = ["windows", "mac", "linux"]
os_uppercase = [os.upper() for os in operating_systems]
print(os_uppercase)
# Output
['WINDOWS', 'MAC', 'LINUX']
Cycling
When cycling through a list is require. Use with proper boundary condition to break the loop
import itertools
operating_systems = ["windows", "mac", "linux"]
for item in itertools.cycle(operating_systems):
print(item)
# Infinite cycling loopmake sure to have proper boundary condition to break
# Output
windows
mac
linux
windows
mac
linux
windows
mac
linux
windows
mac
linux
windows ....... Infinite loop
Over multiple lists
Simultaneously loop over multiple lists. Note the output if the list sizes are different.
operating_systems = ["windows", "mac", "linux"]
mobile_operating_systems = ["android", "ios"]
for os, mobile_os in zip(operating_systems,mobile_operating_systems):
print(os, mobile_os)
# Output
windows android
mac ios
Loop in reverse
operating_systems = ["windows", "mac", "linux"]
for reversed_os in reversed(operating_systems):
print(reversed_os)
# Output
linux
mac
windows
Top comments (0)