Elemente aus Liste auslesen und weiterverwenden

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
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

Hallo, ich habe folgendes Problem:
ich habe eine Liste erzeugt mit einer unbekannten Anzahl an Zahlen x. Die Zahlen möchte ich z.B. in einer for Schleife weiterverwenden und für jedes Element eine eindeutige Variable vergeben. Wichtig ist auch, dass ich die genaue Anzahl der erzeugten Variablen kenne, um alle Variablen aufrufen zu können.
Hier in etwa der Code:

Code: Alles auswählen

mylist = []
for i in range(0,x):
   if i % 2:
      mylist.append(i)
l = len(mylist)
for j in range(0, l):
   FEHLENDER CODE!!!!
   #hier soll jetzt in etwa sowas rauskommen:
   var0 = 1        #bei j = 0 wird das erste Element aus der Liste angesprochen   
   var1 = 3        #bei j = 1 wird das zweite Element aus der Liste angesprochen 
   var2 = 5        #usw...
   
ich habe mir gedacht, dass man die einzelnen Variablen etwa so erzeugen kann:

Code: Alles auswählen

var%s = ... % (j) 
Oder gibts da irgend einen anderen Befehl?
Ebenso ist es mir ein Rätsel, wie ich Elemente aus einer Liste der Reihe nach auslesen kann. Wenn ich list(mylist) verwende kann ich ja keine weiteren Argumente in Klammern verwenden.
Wäre super, wenn mir jemand weiterhelfen könnte. Vielen Dank schon im Voraus!

Gruß, mep
Gromit
User
Beiträge: 51
Registriert: Montag 8. Mai 2006, 19:07

Ich will die ja nicht zu nahe treten, aber mir scheint das ziemlicher Unfug zu sein, insbesondere ist Python kein REXX.

Code: Alles auswählen

mlist[ 0 ]
macht geanu das was Du mit

Code: Alles auswählen

var0
ereichen willst

Dies weist einem Listenelement einen Wert zu:

Code: Alles auswählen

mlist[ 0 ] = "ein wert"
und wenn man C mag kann man auch C-Programme schreiben:

Code: Alles auswählen

for index in range( len( mylist ) ):
  print mylist[ index ]
Allerdings macht das kaum einer, so ist es mehr "pythonic":

Code: Alles auswählen

for element in mylist:
  print element
Dann kann man:

Code: Alles auswählen

for i in range(0,x):
   if i % 2:
      mylist.append(i)
einfach durch:

Code: Alles auswählen

mylist = range( 0, x , 2 )
erreichen.

Schließlich kann man natürlich auch REXX-Programme schreiben:

Code: Alles auswählen

for index in range( 10 ):
  globals()[ "var%d" % index ] = index
Damit hast Du dann Variablen mit den Namen var0 bis var9, aber das ist "unpythonic" bis zum geht nicht mehr ...

HTH,
Gerald
mep
User
Beiträge: 17
Registriert: Montag 15. Mai 2006, 15:58

Hallo Gromit,

erst mal vielen Dank für deine Erklärungen. Vor allem Tip 2 und der letzte Tip bringen mich weiter.
Ich weiß, dass ich höchstwahrscheinlich "unpythonic" schreibe, aber ich bin in Sachen Programmierung noch ein ziemlicher Anfänger und in Python um so mehr. Ich werde versuchen deine Tips umzusetzen. Wahrscheinlich ist es wirklich unnötig eigene Variablen zu erzeugen. Was ist eigentlich REXX? Hab noch nie davon gehört.

Gruß, mep
BlackJack

Rexx ist eine Programmiersprache.
Gromit
User
Beiträge: 51
Registriert: Montag 8. Mai 2006, 19:07

mep hat geschrieben:Was ist eigentlich REXX? Hab noch nie davon gehört.
Wie BlackJack schon erklärt hat; es ist eine Programmiersprache.

Leider hat REXX keine Arrays oder Listen, man muß sie mit Hilfe von Stem-Variablen simulieren.
Diese Stem-Variablen sind dem, was Du wolltest sehr ähnlich, deshalb hatte ich vermutet, daß Du REXX kennst.

Vielleicht hilf Dir ja das Non-Programmers Tutorial For Python weiter.
Das beste Quick-Ref-Sheet, das ich gefunden habe, ist das von Richard Gruet.

Hope That Helps,
Gerald
Gromit
User
Beiträge: 51
Registriert: Montag 8. Mai 2006, 19:07

Antworten