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.

  • Deadlock wegen der Blockierung der Queue.get () Methode
  • Warum ist OSX nicht laufen die Python Ich bekomme mit Whereis Python
  • Wörterbuch beste Datenstruktur für Zugrouten?
  • Tensorflow: Wie bekomme ich alle Variablen von rnn_cell.BasicLSTM & rnn_cell.MultiRNNCell
  • Python: Funktion, die einen Dict zurückgibt, dessen Schlüssel die Namen der Eingabeargumente sind
  • Speichern und Laden von Objekten und Verwendung von Pickle
  • Wie breche ich aus dieser rekursiven Schleife aus?
  • Herunterladen / Exportieren einer csv-Datei, wenn auf eine Schaltfläche in web.py python geklickt wird
  • Python - Klassen und OOP Grundlagen
  • Scipy.optimize.root konvergiert nicht in Python während Matlab fsolve funktioniert, warum?
  • Scrapy Crawl Spider Scrape Bestimmte Anzahl von Schichten
  • Drucken Ergebnis zu Zelle SPSS python Skript
  • 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.