All Position Character Combination Using Python

In Python, generating all possible combinations of characters at each position is a common task in cryptography, password generation, and algorithm design. This article explores multiple approaches to create all position character combinations using Python's powerful itertools module.

Using itertools.product()

The most efficient approach uses the product() function from Python's itertools module, which creates the Cartesian product of input iterables.

Basic Example

Let's generate all combinations of characters 'A', 'B', and 'C' at each position with length 3 ?

import itertools

characters = ['A', 'B', 'C']
combination_length = 3

combinations = itertools.product(characters, repeat=combination_length)

for combination in combinations:
    print(''.join(combination))
AAA
AAB
AAC
ABA
ABB
ABC
ACA
ACB
ACC
BAA
BAB
BAC
BBA
BBB
BBC
BCA
BCB
BCC
CAA
CAB
CAC
CBA
CBB
CBC
CCA
CCB
CCC

The itertools.product() function takes the characters list and uses the repeat parameter to specify the combination length. The ''.join() method converts each tuple into a readable string format.

Recursive Approach

An alternative method uses recursion to build combinations step by step ?

def generate_combinations(characters, combination_length, current_combination=[]):
    if len(current_combination) == combination_length:
        print(''.join(current_combination))
        return
    
    for char in characters:
        generate_combinations(characters, combination_length, current_combination + [char])

# Usage
characters = ['A', 'B', 'C']
combination_length = 2

generate_combinations(characters, combination_length)
AA
AB
AC
BA
BB
BC
CA
CB
CC

Practical Applications

Password Generation

Generate all possible lowercase alphanumeric combinations for security testing ?

import itertools
import string

characters = string.ascii_lowercase + string.digits
combination_length = 2

combinations = itertools.product(characters, repeat=combination_length)

count = 0
for combination in combinations:
    password = ''.join(combination)
    print(password)
    count += 1
    if count >= 10:  # Show first 10 only
        print("...")
        break
aa
ab
ac
ad
ae
af
ag
ah
ai
aj
...

Permutations vs Combinations

For comparison, here's how to generate permutations (order matters, no repetition) ?

import itertools

characters = ['A', 'B', 'C']

# Permutations (no repetition)
permutations = itertools.permutations(characters)
print("Permutations:")
for perm in permutations:
    print(''.join(perm))

print("\nCombinations with repetition:")
combinations = itertools.product(characters, repeat=2)
for comb in combinations:
    print(''.join(comb))
Permutations:
ABC
ACB
BAC
BCA
CAB
CBA

Combinations with repetition:
AA
AB
AC
BA
BB
BC
CA
CB
CC

Complexity Analysis

Method Time Complexity Space Complexity Best For
itertools.product() O(N^M) O(1) iterator Memory-efficient iteration
Recursive O(N^M) O(M) call stack Understanding the logic

Where N is the number of characters and M is the combination length.

Conclusion

Use itertools.product() for efficient generation of all position character combinations. The recursive approach helps understand the underlying logic, while itertools provides the most memory-efficient solution for practical applications.

Updated on: 2026-03-27T12:35:12+05:30

953 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements