When working with lists in Python, you might need to match all possible permutations of a longer list against a shorter list. This is useful in scenarios like:
- Generating possible sequences of a fixed length from a larger pool of items
- Finding all ordered combinations of a subset from a larger list
- Testing different arrangements in optimization or search problems
Example 1: Using itertools.permutations
The easiest way is to use itertools.permutations, which generates all possible ordered arrangements of a given length.
from itertools import permutations
long_list = ['A', 'B', 'C', 'D']
short_length = 2  # We want permutations of length 2
# Generate all possible permutations of length 2
perms = permutations(long_list, short_length)
for perm in perms:
    print(perm)
Output:
('A', 'B')  
('A', 'C')  
('A', 'D')  
('B', 'A')  
('B', 'C')  
... (and so on)  
Example 2: Matching Permutations Against a Target List
If you want to check which permutations match a specific short list:
from itertools import permutations
long_list = ['A', 'B', 'C', 'D']
target = ['B', 'A']  # We want to find if this permutation exists
perms = permutations(long_list, len(target))
if tuple(target) in perms:
    print("Match found!")
else:
    print("No match.")
Output: Match found!
Example 3: Storing Permutations in a List
If you need all permutations stored in a list for further processing:
from itertools import permutations
long_list = ['A', 'B', 'C']
short_length = 2
all_perms = list(permutations(long_list, short_length))
print(all_perms)
Output:
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
Example 4: Permutations with Repeated Elements (Using product)
If you want to allow repeated elements (like ('A', 'A')), use itertools.product instead:
from itertools import product
long_list = ['A', 'B', 'C']
short_length = 2
perms_with_repeats = list(product(long_list, repeat=short_length))
print(perms_with_repeats)
Output:
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
Key Takeaways
- permutations()→ Ordered, non-repeating sequences.
- product()→ Ordered, allows repeating elements.
- Convert permutations to a list if you need to reuse them.
- Use tuple(target)to check if a specific permutation exists.
This approach is efficient and leverages Python’s built-in libraries for clean and fast results.
 
                     
                         
                         
                         
                         
                         
                         
                         
                        