2015-11-16 2 views
-1

Это довольно сложно объяснить, но голый со мной. Я пытаюсь вернуть список строк из функции Groups (s, k), где в основном список строк «k» элементов из строки 'k> = 0 и k < = len (s), и эти элементы в этих строках происходят в том же порядке, что и «s», как показано нижевозвращает список строк в рекурсивной функции python

Группы («abcde», 2) → ["ab", "ac", "ad", "ae", "bc" , "шд", "быть", "CD", "се," де "]

Группы (" ABCDE», 5) → [ "ABCDE"]
группы ("ABCDE", 1) → [ «a», «b», «c», «d», «e»]

Мне очень жаль мою формулировку вопроса, поскольку это трудно понять, но вот что я до сих пор:

def Groups(s,k): 
     if k == 0 or k > len(s): 
      return [""] 

     return [ i*k for i in s if k ==1] 
     if k > 1 and k <= 5: 
      return[ x for y in s y for x in s] 

я бы очень признателен за любую помощь :)

+2

Почему "рекурсия" тег? Здесь нет рекурсии. По какой-то причине вам нужно рекурсивное решение? 'itertools.combinations' делает именно то, что вы хотите. – saulspatz

ответ

3

Я думаю combinations это слово, которое вы ищете:

list(''.join(letters) for letters in combinations("abcde", 2)) 
# returns ['ab', 'ac', 'ad', 'ae', 'bc', 'bd', 'be', 'cd', 'ce', 'de'] 
Смежные вопросы