Генератор комбинаций [duplicate]

Rick Deckard спросил: 13 июня 2018 в 10:48 в: python

У этого вопроса уже есть ответ:

  • How to get all possible combinations of a list’s elements? 21 answer

Я хочу написать код, который дает мне все возможные комбинации n элементов в длине ak k > n. Проблема с этим кодом заключается в том, что я быстро исчерпал память. Мне было интересно, если кто-то знает, как исправить это с помощью генераторов. Я не хочу получать все возможное комбинации элементов списка. Я хочу получить все комбинации элементов в определенной длине. Спасибо.

def allstrings(alphabet, length):
    """Find the list of all strings of 'alphabet' of length 'length'"""    if length == 0: return []    c = [[a] for a in alphabet[:]]
    if length == 1: return c    c = [[x,y] for x in alphabet for y in alphabet]
    if length == 2: return c    for l in range(2, length):
        c = [[x]+y for x in alphabet for y in c]    return cif __name__ == "__main__":
    for p in allstrings(['a','b','c'],4):
        print (p)

1 ответ

nad_rom ответил: 13 июня 2018 в 10:56
import itertoolsitertools.combinations('alphabet', length)

Из Как получить все возможные комбинации элементов списка?

Дополнительное видео по вопросу: Генератор комбинаций [duplicate]

Write a program to print all permutations of a given string | GeeksforGeeks

String Permutation Algorithm

Interview Question: Permutations