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

    Viel Spaß beim Coden 🙂

  • 0 Stimmen
    1 Beiträge
    130 Aufrufe
    Niemand hat geantwortet
  • Vorstellung Restic UI Flask

    Restic UI Flask
    1
    0 Stimmen
    1 Beiträge
    194 Aufrufe
    Niemand hat geantwortet
  • PyWebIO vs. Flask

    Python3
    2
    0 Stimmen
    2 Beiträge
    169 Aufrufe
    FrankMF

    Mist, jetzt habe ich auch noch Streamlit gefunden. Jetzt geht mir langsam die Zeit aus...

  • Pycharm - Umzug auf neuen Rechner

    Linux
    1
    0 Stimmen
    1 Beiträge
    87 Aufrufe
    Niemand hat geantwortet
  • PyWebIO - put_buttons

    PyWebIO
    2
    0 Stimmen
    2 Beiträge
    175 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)) ])
  • PyWebIO - Footer bearbeiten

    PyWebIO
    1
    0 Stimmen
    1 Beiträge
    90 Aufrufe
    Niemand hat geantwortet
  • Python - Match-Case Statement

    Python3
    1
    0 Stimmen
    1 Beiträge
    115 Aufrufe
    Niemand hat geantwortet
  • Qt 5 Designer

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