Liste mit Python ausgeben

(Firma: Schweigstill IT) Persönliche Seite
Ganz einfach: filelist ist keine Liste, auch wenn Du dies durch die 
Namensgebung implizierst. Stattdessen handelt es sich um einen 
Generator. Wenn Du die Fehlermeldung von Python beachtet hättest, hätte 
Dir das auch auffallen müssen:

TypeError: 'generator' object has no attribute '__getitem__'

Bei Generatoren kann man immer nur mit Hilfe der next-Methode auf das 
nächste Element zugreifen und hat keinen wahlfreien Zugriff wie bei 
einer Liste.
Gast
Moin,

os.walk liefert keine Liste zurück sondern einen Gernerator gefüllt mit 
3er-Tuples. Der hat nun mal keinen Direktzugriffoperator (siehe 
Fehlermeldung _getimtem_ fehlt)

Über das Objekt kann man nur iterieren (z.Bsp mit for)
Moderator
Du kannst dir aus dem Generator eine Liste bauen lassen mit
1
realfilelist = list(filelist)

Auf diese Liste kannst du nun auch per Index zugreifen.

Diese Methode hat aber den Nachteil, dass diese Liste (bei entsprechend
vielen Dateien auf der Festplatte) sehr groß werden kann und somit viel
Speicher belegt.

Das ist der Grund, warum die Generatoren in Python eingeführt wurden.
Der Generator braucht fast keinen Speicherplatz, da er die einzelnen
Elemente (in diesem Fall die Namen und Inhalte der jedes Verzeichnisses)
erst generiert werden, wenn sie auch tatsächlich benötigt werden. Damit
darf die Sequenz der generierten Elemente sogar endlos sein.

Diese Vorteile bringen aber die Einschränkung mit sich, dass die
Elemente nur sequentiell gelesen werden können.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.