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

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

Ich bin auf group_func ArbeitsPython Generatorfunktion mit Prädikat

jedoch die group_func ich oben definiert konnte dies nicht tun ... offensichtlich. Irgendeine Hilfe?

+0

Ihre 'hide' Funktion kann durch das eingebaute' iter' ersetzt werden, denke ich. Ich gehe davon aus, dass sein Zweck darin besteht, Sie mit Iteratoren anstatt mit anderen Arten von Iterablen (wie Sequenzen) direkt zu beschäftigen. – Blckknght

Antwort

4

möchten Sie Wörter wie diese teilen?

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

Sie könnten am Ende 'if result: yield result' haben, damit Sie keine leere Liste erhalten. – Blckknght