2190 Stimmen

Wie zähle ich die Vorkommen eines Listenelements?

Wie zähle ich die Vorkommen eines Elements in einer Liste in Python?

9voto

Andreas K. Punkte 8068

Es wurde vorgeschlagen, die Numpy-Funktion bincount funktioniert jedoch nur für 1d-Arrays mit nichtnegative ganze Zahlen . Außerdem könnte das resultierende Array verwirrend sein (es enthält die Vorkommen der ganzen Zahlen von min bis max der ursprünglichen Liste und setzt die fehlenden ganzen Zahlen auf 0).

Eine bessere Möglichkeit, dies mit Numpy zu tun, ist die Verwendung der einzigartig Funktion mit dem Attribut return_counts auf True gesetzt. Es gibt ein Tupel mit einem Array der eindeutigen Werte und einem Array der Vorkommen jedes eindeutigen Wertes zurück.

# a = [1, 1, 0, 2, 1, 0, 3, 3]
a_uniq, counts = np.unique(a, return_counts=True)  # array([0, 1, 2, 3]), array([2, 3, 1, 2]

und dann können wir sie paaren als

dict(zip(a_uniq, counts))  # {0: 2, 1: 3, 2: 1, 3: 2}

Es funktioniert auch mit anderen Datentypen und "2d-Listen", z. B.

>>> a = [['a', 'b', 'b', 'b'], ['a', 'c', 'c', 'a']]
>>> dict(zip(*np.unique(a, return_counts=True)))
{'a': 3, 'b': 3, 'c': 2}

6voto

vishes_shell Punkte 19913

Sie können auch Folgendes verwenden countOf Methode eines eingebauten Moduls operator .

>>> import operator
>>> operator.countOf([1, 2, 3, 4, 1, 4, 1], 1)
3

6voto

eyquem Punkte 25545

Zählen der verschiedenen Elemente, die einen gemeinsamen Typ haben:

li = ['A0','c5','A8','A2','A5','c2','A3','A9']

print sum(1 for el in li if el[0]=='A' and el[1] in '01234')

gibt

3 , nicht 6

5voto

Golden Lion Punkte 2590

Verwenden Sie %timeit, um zu sehen, welche Operation effizienter ist. np.array-Zähloperationen sollten schneller sein.

 from collections import Counter
 mylist = [1,7,7,7,3,9,9,9,7,9,10,0] 
 types_counts=Counter(mylist)
 print(types_counts)

5voto

IPython Punkte 83

Ich würde verwenden filter() Nehmen wir das Beispiel von Lukasz:

>>> lst = [1, 2, 3, 4, 1, 4, 1]
>>> len(filter(lambda x: x==1, lst))
3

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X