2017-03-15 2 views
0

Ich möchte folgendes Ergebnis innerhalb einer Funktionsdefinition erhalten. Wenn ich eine for Schleife verwende, funktioniert es perfekt, aber wenn ich def verwende, gibt es mir nur das erste Element.Index und Element in einer Funktionsdefinition zurückgeben?

text= "I am not a student, but I like to be " 
text1= text.split() 

for index,item in enumerate(text1): 
    print (index, item) 

Ausgang:

0 I 
1 am 
2 not 
3 a 
4 student, 
5 but 
6 I 
7 like 
8 to 
9 be 

Allerdings funktioniert dies nicht innerhalb einer Funktion def. Könnten Sie mir helfen, das Ergebnis in einem zu bekommen?

text= "I am not a student,but I like to be " 
text1= text.split() 

def words(text): 
    for index,item in enumerate(text1): 
     return index, item 

words(text1) 

Ausgang:

(0, 'I') 
+0

weil Wenn Sie das erste Element zurückgeben, sollten Sie 'return list (enumerate (text1))' ausführen – dnit13

Antwort

2

Die return die Funktion beendet und unterbricht, was es in der Funktion zu tun, nie fertig zu werden.

Wenn Sie nicht die ersten Werte zurückgeben, sondern alle wie im ersten Beispiel drucken, wird die gleiche Ausgabe angezeigt.

0

Das Problem ist die return in der Funktion beendet die Ausführung während der ersten Iteration der for-Schleife. Also, die gleichen Dinge wie die Nicht-Funktion Version zu tun, Sie zu print() jedes Paar Werte bräuchten innerhalb davon, wie unten dargestellt:

from __future__ import print_function 

def words(text): 
    for index,item in enumerate(text1): 
     print(index, item) 

text1 = "I am not a student, but I like to be ".split() 

words(text1) 

Ausgang:

0 I 
1 am 
2 not 
3 a 
4 student, 
5 but 
6 I 
7 like 
8 to 
9 be 
Verwandte Themen