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
Python program to print all sublists of a list.
A sublist is a portion of a list containing one or more elements from the original list. Sublists can be contiguous (elements appear in the same order as the original) or non-contiguous (elements are taken from different positions).
Printing Contiguous Sublists Using Nested Loops
Contiguous sublists maintain the original order of elements. We can generate them using nested loops ?
def print_contiguous_sublists(items):
for i in range(len(items)):
for j in range(i, len(items)):
print(items[i:j+1])
numbers = [11, 2, 3]
print_contiguous_sublists(numbers)
[11] [11, 2] [11, 2, 3] [2] [2, 3] [3]
Printing Non-Contiguous Sublists Using itertools
Non-contiguous sublists can skip elements while maintaining relative order. The itertools.combinations() function generates all possible combinations ?
from itertools import combinations
def print_all_sublists(items):
for r in range(1, len(items) + 1):
for combo in combinations(items, r):
print(list(combo))
numbers = [11, 3, 22]
print_all_sublists(numbers)
[11] [3] [22] [11, 3] [11, 22] [3, 22] [11, 3, 22]
Using List Comprehension
List comprehension provides a concise way to generate contiguous sublists in a single line ?
def get_contiguous_sublists(items):
return [items[i:j+1] for i in range(len(items)) for j in range(i, len(items))]
letters = ['a', 'b', 'c']
sublists = get_contiguous_sublists(letters)
print(sublists)
[['a'], ['a', 'b'], ['a', 'b', 'c'], ['b'], ['b', 'c'], ['c']]
Comparison of Methods
| Method | Type | Memory Usage | Best For |
|---|---|---|---|
| Nested Loops | Contiguous | Low | Printing directly |
| itertools.combinations | Non-contiguous | Medium | All combinations |
| List Comprehension | Contiguous | High | Creating list of sublists |
Conclusion
Use nested loops for printing contiguous sublists directly. Use itertools.combinations() for generating all possible sublists including non-contiguous ones. List comprehension is ideal when you need to store all sublists in memory.
