2017-01-18 11 views
0

Für eine Aufgabe in der Schule müssen wir ein Programm entwickeln, das ein Stück Text vom Benutzer in eine Liste bringt und dann alle Positionen eines Wortes findet, nach denen der Benutzer im Text gesucht hat.Was bedeutet der Zeilencode?

Ich habe mehrere Möglichkeiten gefunden, dies fast zu tun, aber sie alle haben einen leichten Rückgang irgendwo entlang der Linie. Abgesehen von einem, aber das hat eine Zeile, die ich nicht verstehe und deshalb frage ich mich, ob mir jemand das erklären könnte.

Die Codezeile ist position = [I for I, x in enumerate(text2) if x == (word)]

+1

Dies ist ein [Listenverständnis] (http://www.secnetix.de/olli/Python/list_comprehensions.hawk), das ['enumerate'] (https://docs.python.org/3/library /functions.html#enumerate) –

+0

position ist eine Liste aller Indizes, in denen ein Element von text2 gleich word ist – fafl

Antwort

0

enumerate Die Funktion der Indizes erzeugt in einer Sequenz auf die Position eines Elements entspricht.

Also, wenn Sie die Liste l = ['this', 'is', 'a', 'text'] haben, würde Enumerate generieren [(0, 'this'), (1, 'is'), (2, 'a'), (3, 'text')] (eigentlich erstellt es einen Generator, aber das ist nicht wirklich wichtig für jetzt). Gemäß der python docs, aufzuzählen entspricht:

def enumerate(sequence, start=0): 
    n = start 
    for elem in sequence: 
     yield n, elem 
     n += 1 

Die Tupel werden dann in I, x entpackt. Wenn x gleich word ist, wird I der Liste hinzugefügt.