2017-11-28 1 views
2

Ich habe versucht, eine Methode zum Löschen der Nachnamen zu finden und die Vornamen an eine neue Liste mit dieser rekursiven Funktion anfügen .Wie man nur die Vornamen von einer Liste mit vollen Namen auf eine neue Liste mit einer rekursiven Funktion anwenden

nameList = ['Julia Truong', 'Chen Wu', 'Jebb Castro', 'Ron Kenndey', 'X Y'] 

def convertName(nameList): 
    if nameList == []: 
     return [] 
else: 
    head = nameList[0:1] 
    rest = nameList[1:] 
    return head + convertName(rest) 
print(convertName(nameList)) 
+1

Ihr Leerzeichen ist ein wenig durcheinander. Was hast du gemeint? Was passiert? Was läuft falsch? – doctorlove

Antwort

2

Ich glaube nicht, dass Sie rekursive Funktion dafür benötigen.

new_list = [name.split()[0] for name in nameList] 

EDIT: in Ordnung, wenn es rekursive Funktion sein muss, dann funktioniert dies:

def convertName(nameList): 
     if nameList == []: 
      return [] 
     elif len(nameList) == 1: 
      return [nameList[0].split()[0]] 
     else: 
      head = nameList[:1] 
      rest = nameList[1:] 
      print('head {}, rest {}'.format(head, rest)) 
      return convertName(head)+convertName(rest) 

Der Ausgang ist dann wie folgt aus:

>>> print(convertName(nameList)) 
    head ['Julia Truong'], rest ['Chen Wu', 'Jebb Castro', 'Ron Kenndey', 'X Y'] 
    head ['Chen Wu'], rest ['Jebb Castro', 'Ron Kenndey', 'X Y'] 
    head ['Jebb Castro'], rest ['Ron Kenndey', 'X Y'] 
    head ['Ron Kenndey'], rest ['X Y'] 
    ['Julia', 'Chen', 'Jebb', 'Ron', 'X'] 

Natürlich können Sie kann print in der Funktion löschen - ich habe es dort, um Ihnen zu zeigen, wie es funktioniert, da es Prüfung Prüfung ist. Ich habe immer noch das Gefühl, dass das sehr unpythonisch ist und ich würde das Listenverständnis hier wirklich bevorzugen.

+0

Ich muss eine rekursive Funktion verwenden. –

+0

Warum ist eine rekursive Funktion erforderlich? Ist es eine Hausaufgabe? – jo9k

+0

Es ist eine Review-Frage für meine Abschlussprüfung, die Rekursion umfasst. –

0

Dies ist, was ich entwickelt habe und es funktioniert gut.

def convertNames(nameList): 
    if nameList==[]: 
     return [] 
else: 
    head = nameList[0:1] 
    rest = nameList[1:] 
    head = head[0].split(' ') 
    head.remove(head[1]) 
    return head + convertNames(rest) 
print(convertNames(['Julia Truong','Chen Wu','Jeb Castro','Ron Kennedy','X Y'])) 
+0

Es ist nicht wirklich rekursiv, Sie nehmen an, dass nameList immer gleich aussieht etc .. Überprüfen Sie meine bearbeitete Antwort für vollständig rekursive Version. – jo9k

Verwandte Themen