Skip to content

List comprehensions

Python3
1 1 104
  • 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

    Viel Spaß beim Coden 🙂

  • PyPi - Pakete ein Sicherheitsproblem?

    Python3 python pypi docker
    1
    0 Stimmen
    1 Beiträge
    132 Aufrufe
    Niemand hat geantwortet
  • Example Class

    Angeheftet Python3 python json
    3
    0 Stimmen
    3 Beiträge
    218 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 - Dict -> JSON und umgekehrt

    Python3 python
    1
    0 Stimmen
    1 Beiträge
    340 Aufrufe
    Niemand hat geantwortet
  • PyWebIO - put_buttons

    PyWebIO pywebio python
    2
    1
    0 Stimmen
    2 Beiträge
    222 Aufrufe
    FrankMF
    Und noch eine kleine Übung, wie man den Buttton abhängig von einem Value enabled/disabled # we build header and tdata for table tab_mount = [] for count, value in enumerate(backups): if count == 0: tab_mount.append(['No.', 'Backup name of the restic data backup', 'Actions']) if backups[value].init == "0": tab_mount.append([count + 1, backups[count].name, put_buttons([ dict(label='Mount', value='Mount', color='primary', disabled=True), dict(label='UMount', value='UMount', color='primary', disabled=True), dict(label='Restore', value='Restore', color='primary', disabled=True), ] , onclick=partial(actions, count + 1)) ]) else: tab_mount.append([count + 1, backups[count].name, put_buttons([ dict(label='Mount', value='Mount', color='primary'), dict(label='UMount', value='UMount', color='primary'), dict(label='Restore', value='Restore', color='primary'), ], onclick=partial(actions, count + 1)) ])
  • ResticUI with PyWebIO - Repo

    PyWebIO pywebio python restic-ui
    1
    0 Stimmen
    1 Beiträge
    122 Aufrufe
    Niemand hat geantwortet
  • PyWebIO

    Angeheftet PyWebIO pywebio python
    1
    1
    0 Stimmen
    1 Beiträge
    235 Aufrufe
    Niemand hat geantwortet
  • Qt 5 Designer

    Python3 python
    1
    4
    0 Stimmen
    1 Beiträge
    141 Aufrufe
    Niemand hat geantwortet
  • Restic UI - REST Server Unterstützung

    Restic UI restic-ui restic rest-server python
    2
    0 Stimmen
    2 Beiträge
    295 Aufrufe
    FrankMF
    Die REST Unterstützung ist komplett https://gitlab.com/Bullet64/restic-ui-public/-/releases/1.1.0 Ich denke, ein wenig Dokumentation wäre noch gut