DEV Community

Cover image for Mastering Python Lists: Essential Techniques You Need to Know
nadbag
nadbag

Posted on • Originally published at Medium

Mastering Python Lists: Essential Techniques You Need to Know

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)`

Enter fullscreen mode Exit fullscreen mode
# Output
windows
mac
linux
Enter fullscreen mode Exit fullscreen mode

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]}")
Enter fullscreen mode Exit fullscreen mode
# Output
Index 0: windows
Index 1: mac
Index 2: linux
Enter fullscreen mode Exit fullscreen mode

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}")
Enter fullscreen mode Exit fullscreen mode
# Output
Index is 0 and value is windows
Index is 1 and value is mac
Index is 2 and value is linux
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
# Output
While looping 0 got the value windows
While looping 1 got the value mac
While looping 2 got the value linux
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
# Output
Consumed form iterator windows
Consumed form iterator mac
Consumed form iterator linux
Consumed all from iterator
Enter fullscreen mode Exit fullscreen mode
# 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
Enter fullscreen mode Exit fullscreen mode

List comprehension

When transformation is required

operating_systems = ["windows", "mac", "linux"]
os_uppercase = [os.upper() for os in operating_systems]
print(os_uppercase) 
Enter fullscreen mode Exit fullscreen mode
# Output
['WINDOWS', 'MAC', 'LINUX']
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
# Output
windows
mac
linux
windows
mac
linux
windows
mac
linux
windows
mac
linux
windows ....... Infinite loop
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode
# Output
windows android
mac ios
Enter fullscreen mode Exit fullscreen mode

Loop in reverse

operating_systems = ["windows", "mac", "linux"]
for reversed_os in reversed(operating_systems):
    print(reversed_os)
Enter fullscreen mode Exit fullscreen mode
# Output
linux
mac
windows
Enter fullscreen mode Exit fullscreen mode

Top comments (0)