Iterate Over a List of Lists in Python
We are given a list that contains multiple sublists, and our task is to iterate over each of these sublists and access their elements. For example, if we have a list like this: [[1, 2], [3, 4], [5, 6]], then we need to loop through each sublist and access elements like 1, 2, 3, and so on.
Using Nested For Loops
This is the most straightforward way to iterate through each sublist and access individual items.
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in a:
for j in i:
print(j, end=' ')
print()
Output
1 2 3 4 5 6 7 8 9
Explanation:
- Outer loop iterates through each sublist.
- Inner loop prints each item in the sublist.
- end=' ' prints items on the same line, followed by print() for a new line per sublist.
Using List Comprehension
If our goal is to flatten a nested list into a single list, list comprehension offers a concise solution.
a = [[1, 2], [3, 4], [5, 6]]
b = [i for sub in n for i in sub]
print(b)
Output
[1, 2, 3, 4, 5, 6]
Explanation:
- List comprehension flattens the nested list into a single list.
- "b" contains all elements from "a" in one dimension.
Using enumerate() on Nested Lists
We can use enumerate() to track indices while iterating, which is helpful when we want to know the position of each sublist.
a = [['Python', 'Java'], ['C++', 'C#'], ['Go', 'Rust']]
for i, g in enumerate(a, start=1):
print(f"Group {i}: {g}")
Output
Group 1: ['Python', 'Java'] Group 2: ['C++', 'C#'] Group 3: ['Go', 'Rust']
Explanation:
- enumerate() tracks index (i) of each sublist (group).
- start=1 begins counting from 1.
- Useful when you need position info along with elements.
Using itertools.chain() Function
itertools.chain() lets us combine multiple iterables into one. It's great for flattening nested lists efficiently, especially with large datasets, as it avoids creating extra lists in memory.
from itertools import chain
a = [[1, 2], [3, 4], [5, 6]]
b = list(chain(*a))
print(b)
Output
[1, 2, 3, 4, 5, 6]
Explanation:
- chain(*a) unpacks and chains all sublists.
- Efficient and memory-friendly for large nested lists.
- Returns a flat list containing all elements.
Also read: matrices, list-comprehension, itertools.chain(), enumerate().