Hey,
sorry falls der Titel komisch klingt, konnte das Problem so kurz nicht besser beschreiben. Hier nun ausführlich:
ich habe eine Liste a=[] und möchte zu dem Namen der Liste gern etwas hinzufügen, damit ich dann bekomme:
a_A=[]
a_B=[]
Gibt es dafür einen Befehl, also so was wie: a_+'a' oder so? (Das funktioniert natürlich nicht)
Ich brauch diesen Befehl, damit ich Listen in einer Funktion immer wieder automatisch neu erstellen und mit einem string-Zusatz versehen kann, z.B. einem Ordnernamen.
Ich rum gesuch in WWW,...konnt aber nix finden, obwohl das Problem ja recht simpel ist.
Danke schon mal!
Philipp
name einer liste mit string-Zusatz definieren
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Öh... Du hast das Variablen-Konzept in Python nicht verstanden! Wozu willst Du einen *Namen* dynamisch ändern? Diese kannst Du im Code doch gar nicht nutzen, da Du dort ja keine dynamischen Namen hinschreiben kannst. Beschreibe und doch mal, wie Du im Code `a_C` nutzen wolltest? Im Ernst, beschreibe das mal, damit Du das Problem bis zu Ende durchdenkst; denn dabei wirst Du eben auf das von mir genannte Hindernis stoßen 
Du suchst Dictionaries! Damit kannst Du als Schlüssel den Verzeichnisnamen nehmen und als Wert die Liste. Ich denke das deckt Dein konkretes Problem hier ab.
Du suchst Dictionaries! Damit kannst Du als Schlüssel den Verzeichnisnamen nehmen und als Wert die Liste. Ich denke das deckt Dein konkretes Problem hier ab.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
danke für die fixe Antwort, ich hatte gehofft ich komme um dics herum;)
ich möchte folgendes machen (etwas heruntergebrochen;)):
ich habe 10 Ordner, die haben alle einen Namen (klar;)) und da ist eine Datei drin. In dieser Datei stehen Zahlen.
Jetzt möchte ich jede Datei bzw. die Zahlen, der 10 Ordner in eine Liste packen.
Der Name der Liste soll jetzt immer als Indizes den Namen des Ordners haben.
ich glaube da gäbe es prinzipiell kein Problem wenn ich halt wüsste wie ich den Ordnernamen in den Listennamen schreibe.
Oder doch?
Edit: ich nutze also quasi die Listen gar nicht dynamisch, hab dann halt blos am ende ganz viele, die ich aber auch alle brauche, da ich dann von den Listen den Mittelwert bilden möchte
ich möchte folgendes machen (etwas heruntergebrochen;)):
ich habe 10 Ordner, die haben alle einen Namen (klar;)) und da ist eine Datei drin. In dieser Datei stehen Zahlen.
Jetzt möchte ich jede Datei bzw. die Zahlen, der 10 Ordner in eine Liste packen.
Der Name der Liste soll jetzt immer als Indizes den Namen des Ordners haben.
ich glaube da gäbe es prinzipiell kein Problem wenn ich halt wüsste wie ich den Ordnernamen in den Listennamen schreibe.
Oder doch?
Edit: ich nutze also quasi die Listen gar nicht dynamisch, hab dann halt blos am ende ganz viele, die ich aber auch alle brauche, da ich dann von den Listen den Mittelwert bilden möchte
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Du willst also doch etwas dynamisches mit etwas statischem mischen! Du willst Ende die Listen statisch verwenden, also indem Du im Code so etwas (unhandliches) hinschreibst:
Die "Generierung" indes willst Du dynamisch umsetzen, indem Du irgend wie in einer Schleife die Namen anhand dieses Musters `liste_ordner_X` erstellen lassen willst.
Mal abgesehen davon, dass das nur über Umwege ginge und nicht empfehlenswert ist: Bemerkst Du Deinen gedanklichen Widerspruch gar nicht? Auf der einen Seite suchst Du einen Weg, kompakten, dynamischen Code zu schreiben - vermutlich, weil Dir das Hinschreiben von 10x dem gleichen Code lästig ist -, auf der anderen Seite willst Du krampfhaft mit einzelnen Namen arbeiten.
Was passiert bei Dir eigentlich, wenn aus 10 20 Ordner werden?
Du musst auch kein Dictionary nutzen; Du kannst auch eine Liste von Tupeln / Listen nutzen... es gibt da viele Möglichkeiten, die eben auch stark vom Anwendungsfall abhängen...
Code: Alles auswählen
def avg(l):
return sum(l) / len(l)
avg(liste_ordner_1)
avg(liste_ordner_2)
avg(liste_ordner_3)
avg(liste_ordner_4)
avg(liste_ordner_5)
...
Mal abgesehen davon, dass das nur über Umwege ginge und nicht empfehlenswert ist: Bemerkst Du Deinen gedanklichen Widerspruch gar nicht? Auf der einen Seite suchst Du einen Weg, kompakten, dynamischen Code zu schreiben - vermutlich, weil Dir das Hinschreiben von 10x dem gleichen Code lästig ist -, auf der anderen Seite willst Du krampfhaft mit einzelnen Namen arbeiten.
Was passiert bei Dir eigentlich, wenn aus 10 20 Ordner werden?
Du musst auch kein Dictionary nutzen; Du kannst auch eine Liste von Tupeln / Listen nutzen... es gibt da viele Möglichkeiten, die eben auch stark vom Anwendungsfall abhängen...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ich benutze fuer Naegel auch immer den Schraubenzieher, da muss ich mich nicht in Haemmer einarbeiten.Tecumseh hat geschrieben:danke für die fixe Antwort, ich hatte gehofft ich komme um dics herum;)
Wenn du denn trotzdem Dicts vermeiden willst, kannst du dir ein poor man's dict mit Assoziationslisten machen, also
Code: Alles auswählen
directories = [ ('albert', 23), ('berta', 5), ('charly'), 21, ...]Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
noch mal danke,
also warum ich dics vermeiden möcht ist, ich schreib grad meine Diplomarbeit fertig, hab jetzt festgestellt, dass ich einige Daten noch besser nutzen könnte.
Bin aber nicht so der Python-Pro und werde in zwei Tagen da auch nicht soooo viel reißen;)
zu meinem Problem:
es ist nicht so, dass ich die Listen selbst mitteln möchte,....ich mach am ende quasi:
(L_1+L_2 + L_3)/3
für alle Listeneinträge. Deswegen brauche ich alle Listen gleichzeitig und mir ist nicht ganz klar wie das dann bei den Dicts wäre.
Also ist gibt jetzt wirklich nicht einen Befehl, wie ich einfach die Listennamen iterativ mit den Ordnern generieren kann?
Sorry wenn das scheinbar ein mieser Weg ist.
also warum ich dics vermeiden möcht ist, ich schreib grad meine Diplomarbeit fertig, hab jetzt festgestellt, dass ich einige Daten noch besser nutzen könnte.
Bin aber nicht so der Python-Pro und werde in zwei Tagen da auch nicht soooo viel reißen;)
zu meinem Problem:
es ist nicht so, dass ich die Listen selbst mitteln möchte,....ich mach am ende quasi:
(L_1+L_2 + L_3)/3
für alle Listeneinträge. Deswegen brauche ich alle Listen gleichzeitig und mir ist nicht ganz klar wie das dann bei den Dicts wäre.
Also ist gibt jetzt wirklich nicht einen Befehl, wie ich einfach die Listennamen iterativ mit den Ordnern generieren kann?
Sorry wenn das scheinbar ein mieser Weg ist.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Tecumseh hat geschrieben: es ist nicht so, dass ich die Listen selbst mitteln möchte,....ich mach am ende quasi:
(L_1+L_2 + L_3)/3
für alle Listeneinträge.
Und wo taucht da jetzt der "Name" des Verzeichnis auf? Du könntest doch hier prima mit einer Liste von Listen arbeiten...
Du willst also gar nicht den Mittelwert der Werte *einer* Liste ermitteln, sondern den aller Werte der Listen mit *demselben* Index!?
Edit: Wenn ja, dann kannst Du das doch so angehen:
Code: Alles auswählen
data = (
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
)
[s / 3 for s in map(sum, zip(*data))]
>>> [4.0, 5.0, 6.0]
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
