Wie finde ich die Anzahl der mal ein Wort von len n in Python?

Ich versuche, die Anzahl der Male in einer Liste zu finden, ein Wort ist gleich einer festgelegten Länge? Also für das Beispiel: 'mein Name ist Ryan' und 2 die Funktion würde mir zurück geben 2 als die Anzahl der Zeiten ein Wort hat eine Länge von 2. Ich habe:

def LEN(a,b): 'str,int==>int' 'returns the number of words that have a len of b' c=a.split() res=0 for i in c: if len(i)==b: res=res+1 return(res) 

Aber all dies gibt mir ein res von 1 und geht nicht an der ersten i mit einem len von c.

  • Abfrage nach Array in eingebetteter Liste
  • Wie kann ich ein Datum eines DateTimeField in Django filtern?
  • Mit Liste auf postgresql JSON Typ mit sqlalchemy
  • Extra Null nach dem Ausführen eines Python-Skripts
  • Ergreifen Sie den Rahmen von der gst Pipeline zu opencv mit Python
  • Wie verwende ich nltk.containers.Trie?
  • Wie man einen Ring von Farben mit Schildkröte-Modul in Python zu ziehen
  • Python: Wie hübsche Druck html in eine Datei
  • Wie kann ich pythons telnetlib verwenden, um Daten von einem Gerät für einen festen Zeitraum zu holen?
  • Wiederholen Sie die Registerkarte beim Ausführen von Python-Code mit SublimeREPL
  • Zugriff auf Elemente im Schatten DOM
  • Scatterplot-Animationen mit Matplotlib speichern
  • 3 Solutions collect form web for “Wie finde ich die Anzahl der mal ein Wort von len n in Python?”

    Ihre Funktion funktioniert gut, Sie kommen gerade frühzeitig zurück:

     def LEN(a,b): 'str,int==>int' 'returns the number of words that have a len of b' c= a.split() res = 0 for i in c: if len(i)==b: res= res + 1 return(res) # return at the end 

    Dies ist gleichbedeutend mit:

     >>> text = 'my name is ryan' >>> sum(len(w) == 2 for w in text.split()) 2 

    Sie return res innerhalb der for-Schleife zurück, und das Programm wird sofort die Ausführung beenden, sobald es diese Anweisung trifft. Sie können es entweder außerhalb der Schleife bewegen, oder verwenden Sie diese vielleicht mehr pythonischen Ansatz:

     >>> text = 'my name is ryan' >>> sum(1 for i in text.split() if len(i) == 2) 2 

    Oder kürzer aber ein wenig weniger klar ( aber und empfohlen ):

     >>> sum(len(i) == 2 for i in text.split()) 2 

    Die zweite Funktion beruht darauf, dass True == 1

    Wie wäre es mit:

     >>> s = 'my name is ryan' >>> map(len, s.split()).count(2) 2 
    Python ist die beste Programmiersprache der Welt.