2017-07-01 1 views
-2

wenn ich eine Liste haben wiePython - Wie die Anzahl der Vorkommen von Unterkette in einer Liste zählen

list = ['helloA', 'hiA', 'helloB', helloC'] 

Ich möchte die Anzahl der Unterkette 'hello' Vorkommen in dieser Liste zählen.

bearbeitet:

Eigentlich hatte ich schon einen weiten Weg es wie dieser Code unten zu zählen:

numb = [x for x,y in enumerate(data['column']) if 'sub-string' in y] 
print len(numb) 

Ich will nur wissen, ob es eine andere Möglichkeit oder besserer Weg ist, es zu tun . Danke

+2

Wie zählen Sie Teilstrings? Hätte '['hellohello']' 1 oder 2? Hätte '['hel', 'lo']' 1 oder 0? – Artyer

+0

was hast du probiert? Bitte lesen Sie [diese Vorschläge, wie man eine Frage schreibt] (https://stackoverflow.com/help/mcve) –

+0

@Artyer '['hallohello']' würde als 1 gezählt werden. Ich meine, die Anzahl der Zeichenfolge zu zählen enthält die Unterzeichenfolge in der Liste. – garjted

Antwort

2
['hello' in x for x in list].count(True) 

oder

sum(['hello' in x for x in list ]) 

oder

len([1 for x in list if 'hello' in x]) 

oder

''.join(list).count('hello') 

HINWEIS: die letzte Methode, eine verschiedene Anzahl von den ersten drei Methoden zur Verfügung stellen kann, wenn einige Ihrer Strings enthalten ‚Hallo‘ mehrfach String - siehe Kommentar von @Artyer zu Ihrer ursprünglichen Frage.

Vermeiden Sie auch den Aufruf eines Listennamens 'list' (ein integrierter Typ in Python).

1

Sie können eine Liste von boolean Schecks summieren gegen jede Saite mit:

my_list = ['helloA', 'hiA', 'helloB', 'helloC'] 
sum('hello' in x for x in my_list) 

Versuchen Sie auch, nicht list als Variablennamen zu verwenden, da es sich um eine integrierte Funktion ist/Objekt in Python.

+0

Reservierte Python-Wörter, auch bekannt als Schlüsselwörter, können nicht als Variablennamen verwendet werden. Sie wollen wahrscheinlich sagen, dass 'list' ein eingebauter – Anthon

+0

@Anton ist. Natürlich kann man eingebaute Typennamen als Variablennamen verwenden. Aber nur weil Python es erlaubt - es bedeutet nicht, dass dies getan werden sollte. –

1

Ein einfaches Beispiel

count = 0 
string = "hello" 
for i in list: 
    if string in i: 
     count += 1 
1

Sie sum() und die in Operator eine Zeichenfolge mit der Unter verwenden können hello in der Liste erscheint die Anzahl der addieren:

>>> lst = ['helloA', 'hiA', 'helloB', 'helloC'] 
>>> sum(string.count('hello') for string in lst) 
3 
>>> 
Verwandte Themen