Seite 1 von 2

Frage zu Listen

Verfasst: Freitag 21. September 2007, 16:21
von Imperator
Hallo,

Code: Alles auswählen

Takte = eingabe.split('+')
Damit erzeuge ich eine Liste, weiß aber nie wie viele Elemente sie dann hat (kommt auf die Eingabe des Benutzers an). Bietet Python eine methode mit der Man das vorletzte und das vorvorletzte poppen kann. Mit dem letzten Element geht das ja auch.

Verfasst: Freitag 21. September 2007, 16:24
von Y0Gi
Bitte schön:

Code: Alles auswählen

>>> eingabe = 'eins+zwei+drei+vier'
>>> eingabe
'eins+zwei+drei+vier'
>>> takte = eingabe.split('+')
>>> takte
['eins', 'zwei', 'drei', 'vier']
>>> len(takte)
4
>>> takte[1:2]
['zwei']
>>> takte[1:3]
['zwei', 'drei']
>>> takte.pop(0)
'eins'
>>> takte
['zwei', 'drei', 'vier']
>>> takte.pop(-1)
'vier'
>>> takte
['zwei', 'drei']
>>>

Verfasst: Freitag 21. September 2007, 16:32
von Imperator
Also '-1' bezeichnet das vorletzte Listenelement? Kann man Listen so umwandeln, dass sie mit einer Print Anweisung ausgegeben werden können?

Verfasst: Freitag 21. September 2007, 16:48
von Y0Gi
Ups, mein Fehler. Nein, es bezeichnet das letzte (also das erste von hinten). Das vorletzte hat demnach den Index -2.

Verfasst: Freitag 21. September 2007, 20:19
von Leonidas
Imperator hat geschrieben:Kann man Listen so umwandeln, dass sie mit einer Print Anweisung ausgegeben werden können?
Ja, ``print listenobjekt`` geht sogar ohne Umwandlung.

Verfasst: Samstag 22. September 2007, 09:29
von Imperator
Ich hab versucht den genauen Befehl im Interpreter herauszufinden, es aber nicht geschafft. Kannst du mir bitte sagen wie das genau geschriebem wird?

Verfasst: Samstag 22. September 2007, 09:45
von BlackJack
Die Anweisung heisst ``print`` (ohne die ``). Wenn Du die nicht kennst, solltest Du vielleicht nochmal ganz von vorne mit dem Python-lernen anfangen.

Code: Alles auswählen

In [52]: liste = [1, 2, 3]

In [53]: print liste
[1, 2, 3]

Verfasst: Samstag 22. September 2007, 10:16
von Imperator
Natürlich kenn ich die anweisung print, aber wenn ich schreibe print liste, dann gibt ds nen Error.

Verfasst: Samstag 22. September 2007, 10:50
von BlackJack
Du hast den Code in meinem letzten Beitrag gesehen? Da ist kein Fehler aufgetreten. Es geht also, und Du must irgend etwas falsch machen.

*Was* Du falsch machst kann man ohne *Quelltext* und die *Fehlermeldung* nicht sagen.

Verfasst: Montag 24. September 2007, 13:25
von Imperator
Wenn ich deinen Code genauso in ein Fenster kopiere (im Interpreter klappt es) kommt die Meldung 'invalid syntax'.
Sorry, das ich gestern nicht mehr drauf geantwortet hab, aber mir ist die Tastatur durchgedreht.

Verfasst: Montag 24. September 2007, 14:16
von BlackJack
Was heisst "in ein Fenster kopieren"? Was für ein Fenster? Welche Anwendung? Was kopierst Du dort hin? Wie ist der volle Traceback?

Verfasst: Montag 24. September 2007, 15:49
von Imperator
Fenster = File, new window
Ein ganz normales Editorfenster also.
Fehlermeldung (es lässt sich gar nicht erst starten): There is an error in your programm.
Invalid syntax

Verfasst: Montag 24. September 2007, 16:06
von C4S3
Nun, der Output oben sieht nach IDLE (oder PyCrust oder sowas) aus.
Wenn du die Zeilen oben richtig kopierst (also eigentlich formatierst) und dann verwendest, dann geht's auch:

Code: Alles auswählen

liste = [1,2,3]
print listeliste
Geht ja bei mir auch. Wenn ich es allerdings "live" in IDLE mache, sieht mein Prompt auch so aus:

Code: Alles auswählen

IDLE 1.2.1      
>>> liste = [1,2,3]
>>> print liste
[1, 2, 3]
>>> 
Also mit den ">>>".

Das trifft dann natürlich auf den anderen Code weit oben auch zu!

Verfasst: Montag 24. September 2007, 17:28
von Imperator

Code: Alles auswählen

in [52]: liste = [1, 2, 3]
in [53]: print liste
genau wie bei BlackJack. Anscheinend mag die IDLE das nicht

Verfasst: Montag 24. September 2007, 17:42
von poker
Imperator hat geschrieben:Anscheinend mag die IDLE das nicht
Du sollst auch ``print liste`` und nicht ``in [53]: print liste`` eingeben...

Verfasst: Montag 24. September 2007, 17:43
von BlackJack
Nein, natürlich mag IDLE den prompt von ipython nicht. Was denkst Du denn was das bewirken sollte? Argh!

Verfasst: Montag 24. September 2007, 17:55
von Imperator
Ups, ich jetzt ist es so

Code: Alles auswählen

 liste = [1, 2, 3]
 print liste
Und die Fehlermeldung 'unexpected intend'(?)
Ach ja, und da einige sagen ich soll listeliste eingeben, damit funktioniert es auch nicht. :(

Verfasst: Montag 24. September 2007, 18:05
von poker
Imperator hat geschrieben:Ups, ich jetzt ist es so

Code: Alles auswählen

 liste = [1, 2, 3]
 print liste
Und die Fehlermeldung 'unexpected intend'(?)
Ach ja, und da einige sagen ich soll listeliste eingeben, damit funktioniert es auch nicht. :(

Code: Alles auswählen

IDLE 1.2      
>>> #### nicht so:
>>>   l = [1,2,3]
  
  File "<pyshell#1>", line 1
    l = [1,2,3]
   ^
IndentationError: unexpected indent
>>> ##### sondern so:
>>> l = [1,2,3]
>>> ##### Du musst also richtig einrücken :)
>>> 

Verfasst: Dienstag 25. September 2007, 13:54
von Imperator
Ich hab doch gar nichts eingerückt. Kannst du das bitte genauer ausdrücken.

Verfasst: Dienstag 25. September 2007, 13:56
von Rebecca
Vielleicht beim copy & paste aus Versehen ein Leerzeichen am Anfang mitkopiert?