Seite 1 von 1

Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 09:49
von SG ;-)
Hallo, folgendes Problem:

ich bin gerade dabei, meine allerersten Versuche mit dem Python-Tutorial anzustellen, und schon stoße ich beim Umgang mit Listen auf etwas, das ich nicht verstehe:

Code: Alles auswählen

a = ['spam', 'eggs', 100, 1234]

print(a[-1])
print(a[1:-1])
a[-1] liefert als Ergebnis: 1234
a[1:-1] liefert als Ergebnis aber: ['eggs', 100]

Müsste das Ergebnis in diesem 2. Fall nicht eigentlich ['eggs', 1234] oder (analog zu dem Slicing bei Strings) sogar ['eggs', 100, 1234] lauten?

Ich bitte um Anfänger-Unterricht :)

LG SG ;-)

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 09:53
von EyDu
Im ersten Fall hast du einen Indexzugriff, im zweiten Slicing. Mit ``m`` greifst du auf das i-te Element zu, mit ``m[i:j]`` holst du dir die Subliste vom Index i bis einschließlich j-1. Das Element mit dem Index j ist nicht mehr enthalten.

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 10:06
von MagBen
Die Slicing Syntax ist
[von einschließlich : bis ausschließlich : Schrittweite]

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 10:07
von SG ;-)
Also, wenn ich das richtig verstanden habe,

dann kann ich einen Slice bei dem das letzte Element der Liste enthalten ist, wenn ich nicht weiß, wie lange die Liste ist, nur so erhalten?

Code: Alles auswählen

a[1:len(a)]
LG SG ;-)

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 10:09
von MagBen
so geht's auch

Code: Alles auswählen

a[1:]

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 10:12
von SG ;-)
Cool,

das gefällt mir. :)

Thx

LG SG ;-)

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 10:14
von MagBen
Die Slicing Syntax ist
[von einschließlich : bis ausschließlich : Schrittweite]
wobei "von einschließlich", "bis ausschließlich" oder "Schrittweite" auch leer oder None oder weggelassen werden dürfen.
Es werden dann sinnvolle Defaultwerte eingesetzt:
von einschließlich: von Anfang an (einschließlich), das muss nicht 0 sein (wenn z.B. die Schrittweite negativ ist)
bis ausschließlich: bis zum Ende (einschließlich)
Schrittweite: 1

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 10:18
von SG ;-)
@MagBen

Ja, danke nochmal.

Das erhellt mir grade einiges, das ich hier in dem Tutorial sehe.

LG SG ;-)

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 10:19
von BlackJack
@SG ;-): Bezüglich des Nebensatzes im ersten Beitrags: Slicing verhält sich bei Zeichenketten genau so wie bei Listen, da gibt es also keinen Unterschied. Auch bei Zeichenketten ist ``s[1:-1]`` alles ausser dem ersten und dem letzten Element.

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 10:24
von SG ;-)
@BlackJack

Gut zu wissen.

Thx

LG SG ;-)

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 28. August 2014, 10:49
von BlackJack
Und um noch mal Korinthen zu kacken: Der Betreff ist ein wenig zu speziell, denn das ist keine Listen-Syntax sondern allgemeiner Syntax für einen Indexzugriff mit einem `slice`-Objekt als Argument. Der Ausdruck links davon muss nicht zwingend zu einer Liste ausgewertet werden, was man alleine an der Syntax ja auch gar nicht so einfach feststellen kann, ausser wenn da eine literale Liste steht. Es war wahrscheinlich „Unklare Semantik bei Listen und Slice-Zugriff” gemeint. :-)

Re: Unklare Listen-Syntax

Verfasst: Donnerstag 4. September 2014, 14:40
von akis.kapo
Auf http://perso.limsi.fr/pointal/python:memento wird es unter "Indexation des séquences" gut dargestellt.
Der Text ist auf französisch, aber die Diagramme sind dennoch allgemein verständlich.

PDF: http://perso.limsi.fr/pointal/_media/py ... ython3.pdf
ODF: http://perso.limsi.fr/pointal/_media/py ... nglish.odg