Liste von Listen/Tupeln in Datei speichern

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo,


    ich habe eine Liste, bestehend aus Listen:

    Code
    [ [1, True], [2, True, False], [3, True, False, False] ]

    Nun möchte ich diese in einer Datei abspeichern und auch wieder laden.

    Dazu habe ich folgendes Modul geschrieben:

    Code
    import pickle
    
    def listsave(liste, datei):
        with open(datei, 'wb') as file:
            pickle.dump(liste, file)
            
    def listload(datei):
        with open(datei, 'rb') as file:
            return pickle.load(file)


    Wenn ich die Liste abspeichere und wieder lade, erhalte ich allerdings nicht die Teillisten, und auch nicht die führenden Zahlen. In meinem Fall bekomme ich also:

    Code
    [ True, True, False, True, False, False ]


    Woran liegt das?

  • Auf einem PC-Linux laeuft das richtig:


  • Hallo,


    bei mir funktionieren deine Funktionen korrekt.

    Habe nur im Skript allgemein kleine Anpassungen vorgenommen, da du nicht deinen kompletten, lauffähigen Code gepostet hattest



    Ausgabe:

    Code
    [[1, True], [2, True, False], [3, True, False, False]]


    Der Fehler liegt also wohl in dem Teil, den du nicht gepostet hast

  • Ich würde für so etwas eher JSON statt Pickle verwenden. Und Listen die eine Zahl und dann Wahrheitswerte enthalten sind komisch. Listen sollten eigentlich nur Objekte vom gleichen („Duck“-)Typ enthalten. Wenn der Index festlegt was ein Wert bedeutet, dann ist das eher etwas für Tupel.

    „Eat the rich — the poor are full of preservatives.“ — Rebecca ”Becky” Connor, The Connors

  • Ich würde für so etwas eher JSON statt Pickle verwenden. Und Listen die eine Zahl und dann Wahrheitswerte enthalten sind komisch. Listen sollten eigentlich nur Objekte vom gleichen („Duck“-)Typ enthalten. Wenn der Index festlegt was ein Wert bedeutet, dann ist das eher etwas für Tupel.

    Danke für diesen Hinweis.

    Das Skript berechnet Primzahlen der Form h*2^k+1. Dabei gebe ich k vor und es läuft h alle ungeraden Zahlen von 1 bis 2^k-1 durch. Falls h*2^k+1 prim, dann setze an der entsprechenden Stelle "True".


    Ist meine Umsetzung nicht sinnvoll?