sensenmann
Goto Top

Listenelemente werden nicht wie erwartet ausgegeben?

Ich wollte mich eben in Python einarbeiten und habe mir dazu mal dieses Tutorial angeschaut, welches von der offiziellen Python-Seite empfohlen wird. Allerdings muss ich mir schon jetzt den Kopf über ein Problem zermartern, das mir sehr komisch erscheint. Es sieht bei mir (Ubuntu 10.10) nämlich so aus, als würde es noch ein unwirkliches Element in der Liste nach dem 3. geben... Anders aber im Tutorial, da wird alles so angezeigt, wie es sein sollte.
ich@rechner:~$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
>>> tinylist = [123, 'john']
>>> 
>>> print list          # Prints complete list
['abcd', 786, 2.23, 'john', 70.200000000000003]
>>> print list       # Prints first element of the list
abcd
>>> print list[1:3]     # Prints elements starting from 2nd to 4th - Hier müsste eben das 4. Element 'john' auch noch stehen!
[786, 2.23]
>>> print list[2:]      # Prints elements starting from 3rd element
[2.23, 'john', 70.200000000000003]
Dann hab ich noch wie blöd rumprobiert, um die Ursache zu finden:
>>> print list[3]
john
>>> print list[4]
70.2
>>> print list[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> print list[3:5]
['john', 70.200000000000003]
>>> print list[3:4]
['john']
>>> print list[4]
70.2
>>> print list[3]
john
>>> print list[2:3]
[2.23]
>>> print list[4:5]
[70.200000000000003]
Ich weiß nicht was das soll, aber so verpeilt, dass ich da was einfach falsch eingegeben habe, bin ich auch nicht: Das müsste eigentlich genau wie im Tutorial aussehen! Ich hoffe ihr könnt mir helfen, denn ich weiß nicht mehr weiter...

MfG,
Sensenmann

Content-Key: 153758

Url: https://administrator.de/contentid/153758

Printed on: April 19, 2024 at 05:04 o'clock

Member: Sensenmann
Sensenmann Oct 28, 2010 at 14:25:55 (UTC)
Goto Top
Verdammt: Ich kann von diesem Tutorial nur abraten. Ich weiß echt nicht, warum bei denen die Python-Ausgabe falsch ist! Jedenfalls ist auf der (viel besseren) deutschen Übersetzung des offiziellen Python-Tutorials beschrieben, warum die Indizes sich so verhalten und es dann eben nicht wie das Listing in dem komischen Tutorial aussieht, welches ich mir vor ein paar Tagen angesehen habe.

Hier die Erklärung der sogenannten Listings vom übersetzten Tutorial (hier ist es ein String "HelpA", auf den mit Indizes zugegriffen wird):
Man kann sich die Indizes beim Slicing so vorstellen, dass sie zwischen den Zeichen liegen — wobei die linke Ecke des ersten Zeichens den Index 0 hat und die rechte Ecke des letzten Zeichens einer n Zeichen langen Zeichenkette den Index n. Ein Beispiel
+---+---+---+---+---+
 | H | e | l | p | A |
 +---+---+---+---+---+
 0   1   2   3   4   5
-5  -4  -3  -2  -1
Die erste Zahlenreihe gibt die Position der Indizes 0...5 im String an, die zweite Reihe die entsprechenden negativen Indizes. Der Ausschnitt von i bis j besteht aus allen Zeichen zwischen den Positionen, die durch i beziehungsweise j gekennzeichnet werden.
Bei Verwendung von nicht-negativen Indizes entspricht die Länge des dadurch festgelegten Ausschnitts der Differenz der beiden Indizes, sofern beide innerhalb der tatsächlichen Grenzen der Zeichenkette liegen. Die Länge von word[1:3] ist zum Beispiel 2.

Damit hat sich das Thema für mich geklärt (nie wieder auch nur einen Blick auf inoffizielle Tutorials werfen ^^). Entschuldigt bitte, wenn ich den einen oder anderen damit verärgert habe, für sowas minderwertiges ein neues Thema aufgemacht zu haben...

MfG,
Sensenmann

PS: Kann mir wer sagen, warum der Code-Block nicht in die Box rein will?