2016-04-09 28 views
-1

Ich arbeite an einem Problem, wo ich durch die Elemente einer Passage gehen und die Wörter identifizieren muss, die "unbekannt" sind. Ich habe zwei Listen.Identifizieren, ob die Zeichenfolgen in einer Liste in einer anderen Liste von Zeichenfolgen vorhanden sind

Die erste (die Passage): ["this","is","a","test","does","it","work"]

und eine Liste der "bekannten" Wörter: ["this","is","a","test"]

Ich bin ein ziemlich elementar Coder in Python, so versuche ich, verschachtelt zu verwenden for-loops, die durch die Punkte der Passage-Liste gehen und sie mit den Wörtern in der "bekannten" Liste vergleichen, aber ich stehe vor einigen Problemen.

for word in passage: 
    for word1 in known: 
     if word == word1: 
      print word + " " 
     else: 
      print "* " + word + " * " 

Das würde erwartete Ergebnis >>>"this is a test * does * * it * * work *" sein

+0

Was für ein Problem, das Sie haben? –

+1

Python hat eine nette Eigenschaft: 'für das Wort in bekannt: wenn das Wort in der Passage: ...' Dann können Sie vermeiden, die zweite 'for' Schleife und die' == ' – jDo

Antwort

0
passage = ['this','is','a','test','does','it','work'] 
known_words = ['this','is','a','test'] 
new_string = [] 
for word in passage: 
    if word in known_words: 
     new_string.append(word + " ") 
    else: 
     new_string.append("* " + word + " * ") 

print ''.join(new_string) 

Ausgabe: Das this is a test * does * * it * * work *

1

Versuchen:

def identify(passage, known_words): 
    result = [i if i in known_words else "* " + i + " *" for i in passage] 
    return " ".join(result) 

Ergebnis:

>>> identify(["this","is","a","test","does","it","work"], ["this","is","a","test"]) 
'this is a test * does * * it * * work *' 
1

Ich sollte meinen Kommentar eine Antwort geben, denke ich. Python hat eine nette Funktion; nämlich das Schlüsselwort in, das Sie bereits in den zwei for Schleifen verwenden. in ermöglicht es Ihnen auch, eine Liste, Tupel oder ein Wörterbuch nach der Existenz einer Variablen, einer Phrase usw. zu suchen. ohne die Verwendung einer expliziten for Schleife. Also statt:

for word in passage: 
    for word1 in known: 
     ... 

Sie können einfach schreiben:

for word in passage: 
    # here, python will search the entire list (known) for word 
    if word in known: 
     print word + " " 
    else: 
     print "* " + word + " * " 
Verwandte Themen