Variable pro Schleifendurchlauf erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

Hallo!

Ich möchte in einer Schleife pro Schleifendurchlauf eine Variable erstellen.

Code: Alles auswählen

for i in range(5):
     variable,i=blabla
"variable,i" soll die Variable "variable1" bei i=i liefern, bei i=2 soll es "variable2" werden; und so weiter.
Wie ist die Syntax dazu?
Oder wie heißt dieses Problem? Ich habe in den Python-Tutorials nichts gefunden.


Danke schonmal!,
Gruß
peak
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Du suchst ein "Dictionary".
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Code: Alles auswählen

data = {}
for i in xrange(5):
     data[i] = blabla

print data[1], data[0], data[2]
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

In diesem Fall reicht aber auch eine Liste (a.k.a. Array, Feld, Vektor).

Stefan
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

sma hat geschrieben:In diesem Fall reicht aber auch eine Liste (a.k.a. Array, Feld, Vektor).
Ja, kam mir dann auch, ist wahrscheinlich auch geschickter. Ich schieb das einfach mal auf das heiße Wetter.
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

Hm...
Eine Liste reicht eben nicht aus.
Damit es klarer wird, hier mal ein Beispiel:

Code: Alles auswählen

for i in range(3):

    x+=50
    y+=40

    if i==0:
        photo0= ImageTk.PhotoImage(file= "C:/bla.jpg")

    if i==1:
        photo1= ImageTk.PhotoImage(file= "C:/bla2.jpg")

    if i==2:
        photo2= ImageTk.PhotoImage(file= "C:/bla2.jpg")
Ich möchte diese If-Fälle vermeiden und stattdessen in eine Zeile schreiben, dass die Variable photoX (X=i) selbst erstellt wird.
Es sollen also nach dem Muster photo,i genauso viele Variablen erstellt werden, wie es Schleifendurchläufe gibt.
Vielleicht sowas wie

Code: Alles auswählen

photo,i= ImageTk.PhotoImage(file= "C:/bla2.jpg")
?
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Warum reicht da keine Liste?

Code: Alles auswählen

photos = list()
for i in xrange(3):
    photo = ImageTk.PhotoImage(file="C:/bla%i.jpg" % i)
    photos.append(photo)
    # Irgendwas mit `photo` machen

# photos[0] wäre jetzt quasi ``photo0``
Peak_me
User
Beiträge: 92
Registriert: Sonntag 27. Januar 2008, 03:09

Ja, da hast du Recht.
Ich dachte nicht, dass man in eine Liste auch Fotos packen kann.
Danke für die Hilfe!
Antworten