Python itertools длина комбинации

Обновить

April 2019

Просмотры

1.4k раз

1

Был бы признателен за любой вклад об этой проблеме практики:

Учитывая строку длины nи целое число k, печать всех возможных комбинаций длины k(NCK печати) в соответствии с тем ограничением , что 1<= k<= n. Вы не можете предположить , не повторяющихся символов

Примеры:

азбука, 2 -> AB, BC, CA

аЬс, 1 -> а, б, в

азбука, 3 -> а

2 ответы

0

Thanks for the answer Rain, works great.

Answer:

import itertools

def func(data, r):
    return ["".join(x) for x in itertools.combinations(data, r)]

print(func('abc', 2))
print(func('abc', 1))
print(func('abc', 3))

Output:

['ab', 'ac', 'bc']
['a', 'b', 'c']
['abc']

Notes:

itertools.combinations(iterable, r)

Return r length subsequences of elements from the input iterable.

Combinations are emitted in lexicographic sort order. So, if the input iterable is sorted, the combination tuples will be produced in sorted order

1
import itertools

def func(data, r):
    return ["".join(x) for x in itertools.combinations(data, r)]