Announcement

Collapse
No announcement yet.

Bestimmte Elemente aus Liste entfernen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bestimmte Elemente aus Liste entfernen

    Hallo alle zusammen,

    ich habe folgende Liste:

    liste0 = [1,1,1,2,2,2,3,3,3,4,4,7,7]

    Aus dieser Liste möchte ich Elemente so rausstreichen, dass bei dreifach vorkommenden Elementen eins von diesen Elementen rausgestrichen wird.

    Die Liste würde dann wie folgt aussehen:

    liste0 = [1, 1, 2, 2, 3, 3, 4, 4, 7, 7]


    Durch Suchen und ausprobieren habe ich mir folgenden Code zusammengesetzt:

    Code:
    1. liste0 = [1,1,1,2,2,2,3,3,3,4,4,7,7]
    2. i = 0
    3.
    4. print(liste0)
    5. while i < len(liste0):                    
    6.        if liste0.count(liste0[i])==3:          
    7.            liste0.remove(liste0[i])
    8.        i+=1
    9. print(liste0)
    Der Code macht am Ende genau das was ich möchte, aber mir ist nicht im Detail klar was passiert.

    Ich verstehe den Code bisher so:

    In Zeile 5 wird die Länge der Liste geprüft. Ist diese größer als i, wird der dadrunter
    folgende Code ausgeführt.

    In Zeile 6 werden die einzelnen Elemente gezählt. Sollte ein Element dreifach vorkommen,
    wird dieses Element mit Zeile 7 gestrichen.

    Allerdings ist mir die Aufgabe von Zeile 8 nicht ganz klar und

    Frage:

    Ist es richtig das mit
    Code:
    remove()
    das erste Element in einer Reihe gestrichen wird also z.B. bei 1,1,1 die erste 1?

    Vllt kann mir jemand erläutern, was genau im oben gezeigten Code passiert. Würde das gerne
    verstehen....

    Danke schon mal im voraus.


    Edit:

    Gerade festgestellt, dass die Sache doch nicht so funktioniert wie gedacht,
    weil wenn die Liste wie folgt aussieht:

    liste0 = [1,1,1,2,2,2,2,3,3,3,4,4,7,7]

    dann bleiben die 4x 2 so stehen, also er streicht nichts raus.

    Hab schon eine Ahnung woran das liegen könnte (siehe Zeile 6)....:/
    Zuletzt editiert von H311fish; 27.03.2021, 15:22.

  • #2
    Zeile 8 erhöht den Zähler der Schleife, sonst würde i immer den Wert an Position 0 genutzt
    Das er 4 Vorkommen nicht löscht liegt an der Bedingung
    if liste0.count(liste0[i])==3:
    Es wird explizit auf ==3 geprüft. Das wäre durch >=3 zu ersetzen
    Christian

    Comment


    • #3
      Danke für deine Antwort@Christian

      Kann ich mir das so vorstellen, dass Python, abhängig von der Länge der Liste, x - mal (in diesem Fall 13 mal)
      durch die Liste geht und sich gefundenen Ziffern "merkt" und bei denen die die genau 3x vorkommen die dritte
      Ziffer "rausschmeisst" so das letzendlich 2 Ziffern stehen bleiben?


      Das Problem, das explizit immer auf ==3 geprüft wurde konnte ich lösen.., aber anders als Christian vorgeschlagen
      hat....

      Comment

      Working...
      X