Skip to content

List comprehensions

Python3
  • Fangen wir mal an, mit einer Übersetzung. Mein Englisch ist nicht perfekt, so muss ich ab und zu mal was nachschauen.

    7a6d9323-81a5-451b-86c4-387ca41fe497-grafik.png Quelle: deepl.com

    Ok, jetzt haben wir eine Vorstellung davon, was es machen soll. Ein Beispiel wie ich das so als Anfänger gemacht habe.

    # Delete key_list
    keys_list = []
    
    # redo keys_list
    for key in backups:
        keys_list.append(key)
    

    Finde ich jetzt eigentlich gut lesbar und verständlich. Aber mit List comprehensions soll es eleganter sein.

    Die Listen-Abstraktion, eigentlich auch im Deutschen besser als "List Comprehension" bekannt, ist eine elegante Methode Mengen in Python zu definieren oder zu erzeugen.
    Quelle: https://www.python-kurs.eu/list_comprehension.php

    In meiner Datei speicher ich die Daten der Backups mit einem Key. Hier mal ein Add, aus diesem Beispiel

    backups[(BackupList.last_key()) + 1] = BackupList(name, repository)
    

    Damit man zum Beispiel einen Eintrag jetzt editieren oder auch löschen kann, muss ich den Key kennen. Mit dem obigen Beispiel erhält man jetzt alle Keys, die in dem Objekt enthalten sind.

    Ausgabe

     ['1', '7', '8', '10', '14', '17', '18', '20']
    

    Diese Daten werden in eine neue Liste keys_list geschrieben.

    Das kann man dann mit List comprehensions so lösen.

    # Delete key_list
    keys_list = []
    
    # redo keys_list
    [keys_list.append(key) for key in backups]
    

    In folgendem Video wird das exzellent erklärt. Unbedingt als Einsteiger anschauen.

    Diese List Comprehensions können auch noch eine Condition (if) beinhalten. In o.g. Video wird das an diesem Besipiel sehr anschaulich vermittelt.

    67b88929-3cc0-4a66-b438-45a6807ca7b0-grafik.png
    Besonders die Ergänzung, als Erklärung, mit SELECT, FROM und WHERE sollte es allen, die schon mal mit einer MySQL Dataenbank gearbeitet haben, einfacher machen.

    Eine weitere sehr gute Anleitung dazu findet man auf

    https://realpython.com/list-comprehension-python/

    Viel Spaß beim Coden 🙂

  • Flask Projekt auf einem anderen Rechner installieren

    Python3
    1
    0 Stimmen
    1 Beiträge
    127 Aufrufe
    Niemand hat geantwortet
  • NiceGUI

    Linux
    2
    0 Stimmen
    2 Beiträge
    322 Aufrufe
    FrankMF

    Ich habe mir das jetzt einige Tage gegeben und habe mich dagegen entschieden. Werde weiterhin PyWebIO benutzen. Hauptgrund ist die wesentlich bessere Dokumentation -> https://pywebio.readthedocs.io/en/latest/index.html

    Da kann ich mir auch mit meinem Python Kenntnisstand die Informationen holen, die ich brauche um es einzusetzen.

  • PyPi - Pakete ein Sicherheitsproblem?

    Python3
    1
    0 Stimmen
    1 Beiträge
    91 Aufrufe
    Niemand hat geantwortet
  • Restic UI - Stand Januar 2023

    PyWebIO
    1
    0 Stimmen
    1 Beiträge
    116 Aufrufe
    Niemand hat geantwortet
  • Python - Frameworks

    Python3
    2
    0 Stimmen
    2 Beiträge
    110 Aufrufe
    FrankMF

    Und mal hier parken

  • Vorstellung Restic UI als PyWebIO Version

    PyWebIO
    7
    0 Stimmen
    7 Beiträge
    181 Aufrufe
    FrankMF

    Link Preview Image Merge branch 'master' into 'main' (45c83cd8) · Commits · Frank / restic_ui_pywebio · GitLab

    Fix some bugs See merge request Bullet64/restic_ui_pywebio!71

    favicon

    GitLab (gitlab.com)

  • Example Class

    Angeheftet Python3
    3
    0 Stimmen
    3 Beiträge
    139 Aufrufe
    FrankMF

    In meinem PywebIO Projekt tauchte heute ein alter Bekannter auf. Wenn ich einen Eintrag (innerhalb der Liste) löschte, war das etwas durcheinander 🤔

    Ja, den Fehler kenne ich schon was länger und stolper immer mal wieder drüber. Heute z.B.

    Also mal grübeln 🤓

    Das mache ich, wenn ich einen Eintrag lösche

    case 'Yes': # delete entrie BackupList.delete((line - 1)) # save json BackupList.save_json() # Load data from filesystem BackupList.load_json() # Reload Tab Backup backup()

    Ich mache folgendes

    lösche den Eintrag speicher die Liste lade die Liste baue den Tab wieder auf

    Das führt aber dazu, das meine Liste die als Objekt im Speicher steht nicht aktuell ist. Im Gegenteil, da ist dann etwas Unordnung. Ich brauchte also die Möglichkeit mein Objekt backups irgendwie zurückzusetzen.

    Mal gegoogelt und die Dinge sind manchmal wirklich total easy 🙂

    # clear dict backups.clear()

    Das leert das Objekt und im nächsten Schritt kann ich es wieder befüllen.

    Lösung case 'Yes': # delete entrie BackupList.delete((line - 1)) # save json BackupList.save_json() # clear dict backups.clear() # Load data from filesystem BackupList.load_json() # Reload Tab Backup backup()

    Problem erledigt. Damit ich das noch finde, wenn mein Kopf das nicht mehr hergibt, notiere ich das hier.

  • Python - Match-Case Statement

    Python3
    1
    0 Stimmen
    1 Beiträge
    108 Aufrufe
    Niemand hat geantwortet