2016-04-28 6 views
0
def group_func(iterable,p): 

    for i in iterable: 
     yield [i] 
     if p(i): 
      yield i 

Я работаю на group_funcPython функции генератора с предикатом

Однако group_func я определил выше, не мог этого сделать ... очевидно. Любая помощь?

+0

Ваша функция 'hide' может быть заменена встроенным' iter', я думаю. Я предполагаю, что его цель - заставить вас работать с итераторами, а не с другими типами итераций (например, последовательностей) напрямую. – Blckknght

ответ

4

Вы хотите разделить слова следующим образом?

def hide(iterable): 
    for v in iterable: 
     yield v 

def group_func(iterable,p): 
    result = [] 
    for i in iterable: 
     result.append(i) 
     if p(i): 
      yield result 
      result = [] 
    yield result 


print([v for v in group_func('combustibles', lambda x : x in 'aeiou')]) 
print([v for v in group_func(hide('combustibles'), lambda x : x in 'aeiou')]) 
+0

Возможно, вам понадобится 'if result: result result' в конце, поэтому вы не получите пустой список. – Blckknght

Смежные вопросы