Das am häufigsten vorkommende Element in einer Liste ermitteln in Python?

4 Antworten

Mir fallen spontan 2 Möglichkeiten ein:

a)

  • Iteriere über die Liste
  • Pro Durchlauf prüfst du, wie oft das aktuelle Element in der Liste vorkommt
  • Das Resultat speicherst du in einer globalen Variable, sofern ihr bisheriger Wert überschritten wurde (in dem Fall solltest du dir außerdem den aktuellen Index merken)

b)

  • Iteriere über die Liste
  • Lege dir dabei ein assoziatives Feld (Map) an, in dem du die Häufigkeit pro Element speicherst
  • Iteriere danach noch einmal über die Map, um das Element mit dem größten Wert zu bekommen

Geht so etwas? Ähnlich wie dein (b) aber ohne zusätzliches (großes) Objekt:

  1. Sorieren
  2. Liste ein mal durchlaufen und in einer Variablen die Häufigkeiten zählen.

Dein (a) versteh ich nicht ganz aber sieht für allg. input nach n² worst case aus (?).

0
@Lolligerhans

Ja, das geht auch. Die Liste wird aber auch bei dieser Methodik mehr als einmal durchlaufen. Des Weiteren benötigst du 2 Variablen oder ein Objekt zur Assoziation zwischen Element und Häufigkeit. Eine weitere, dritte Variable müsste temporär den Zählstatus des aktuellen Elements speichern.

Methode a) läuft ähnlich wie eine Methode max ab, nur dass sie ineinander verschachtelte Schleifen benötigt. Optimal ist sie nicht.

0

Mein Vorschlag: arbeite mit Sets:

def find_common(myList):
return max(set(myList), key=myList.count)



Dafür gibt es die Counter-Klasse aus dem collections-Package:

from collections import Counter as c
l = ['A', 'B', 'C', 'A']
x = c(l).most_common()[0][0]

Danach enthält die Variable x den Buchstaben 'A'. :)

Dafür gibt es...

In Python gibt's für alles ein Package! Probier mal:

> python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import antigravity
>>>
1