Python - K length Combinations from given characters

K length combinations from given characters mean the combinations of characters that we can create with the given characters, which are exactly of length k. In this article, we will explore several methods to achieve this, like recursion, map and lambda function, itertools library, etc. While recursion and lambda functions are custom functions, the itertools provide the in-built method to generate the combinations.

Using Recursion

Recursion is a programming technique where we break a large problem into smaller chunks. We need to define a base case to stop the recursion and prevent infinite loops.

Example

In the following example, we create a function named generate_combinations that takes characters and the desired length k. The helper function recursively builds combinations ?

def generate_combinations(characters, k):
    combinations_list = []

    def generate_helper(current_combination, remaining_characters):
        if len(current_combination) == k:
            combinations_list.append(current_combination)
            return

        for char in remaining_characters:
            generate_helper(current_combination + char, remaining_characters)

    generate_helper('', characters)
    return combinations_list

characters = ['A', 'B', 'C', 'D', 'E']
k = 2

result = generate_combinations(characters, k)
print(result)

The output of the above code is ?

['AA', 'AB', 'AC', 'AD', 'AE', 'BA', 'BB', 'BC', 'BD', 'BE', 'CA', 'CB', 'CC', 'CD', 'CE', 'DA', 'DB', 'DC', 'DD', 'DE', 'EA', 'EB', 'EC', 'ED', 'EE']

Using itertools.product() Method

The itertools library provides functions for efficient iteration. The product() method generates Cartesian product with repetition, making it perfect for creating combinations with replacement.

Example

We import the product module and use it to create all possible k-length combinations ?

from itertools import product

def generate_combinations(characters, k):
    combinations_list = list(product(characters, repeat=k))
    combinations_strings = [''.join(comb) for comb in combinations_list]
    return combinations_strings

characters = ['A','B','C','D','E']
k = 2

result = generate_combinations(characters, k)
print(result)

The output of the above code is ?

['AA', 'AB', 'AC', 'AD', 'AE', 'BA', 'BB', 'BC', 'BD', 'BE', 'CA', 'CB', 'CC', 'CD', 'CE', 'DA', 'DB', 'DC', 'DD', 'DE', 'EA', 'EB', 'EC', 'ED', 'EE']

Using Map and Lambda Function

Lambda functions provide a concise way to define small functions. Combined with map(), we can efficiently convert tuples to strings ?

Example

We use the same product method but convert tuples to strings using map and lambda ?

from itertools import product

def generate_combinations(characters, k):
    combinations_list = list(product(characters, repeat=k))
    combinations_strings = list(map(lambda comb: ''.join(comb), combinations_list))
    return combinations_strings

characters = ['P','Q','R','S','T']
k = 2

result = generate_combinations(characters, k)
print(result)

The output of the above code is ?

['PP', 'PQ', 'PR', 'PS', 'PT', 'QP', 'QQ', 'QR', 'QS', 'QT', 'RP', 'RQ', 'RR', 'RS', 'RT', 'SP', 'SQ', 'SR', 'SS', 'ST', 'TP', 'TQ', 'TR', 'TS', 'TT']

Comparison

Method Performance Memory Usage Best For
Recursion Slower Higher Learning recursion
itertools.product() Fastest Efficient Production code
Map + Lambda Fast Efficient Functional programming

Conclusion

Use itertools.product() for the most efficient solution when generating k-length combinations with replacement. The recursion approach helps understand the concept, while map and lambda provide a functional programming style.

---
Updated on: 2026-03-27T08:30:38+05:30

525 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements