Schreibweisen für Tupel in Python (Schreibweisen für Tupel in Python), Lektion, Seite 724704
https://www.purl.org/stefan_ram/pub/tupelschreibweisen_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Schreibweisen für Tupel in Python 

Tupel sind für uns an dieser Stelle des Kurses dasselbe wie Listen, nur mit einem anderen Typ und etwas anderen Schreibweisen. Warum es neben den Listen auch noch Tupel gibt, kann erst etwas später erklärt werden.

Das Ausdrücken von Tupeln

Ein Tupel kann ausgedrückt werden, indem Ausdrücke für die Objekte der einzelnen Einträge durch ein Komma  »,« getrennt angegeben werden. Im Gegensatz zu Listen sind hier also keine Klammern nötig.

Ein Tupel mit zwei Stellen, die beide an das Objekt ›False‹ gebunden sind
False, False
(False, False)

Wie man sieht, werden Tupel dann mit runden  Klammern ausgegeben.

Ein Tupel mit zwei Stellen, die an das Objekt ›1‹ beziehungsweise ›2‹ gebunden sind
1, 2
(1, 2)
Ein Tupel mit drei Stellen, die an verschiedene Objekte gebunden sind
False, 2, "z"
(False, 2, 'z')

1-Tupel

Dem letzten Operanden des Komma-Operators kann auch noch ein Komma nachgestellt werden, ohne daß dies die Bedeutung verändert.

Konsolenprotokoll
1, 2,
(1, 2)

Um ein 1-Tupel auszudrücken kann ein Ausdruck für das mit der Stelle zu verbindende Objekt vor ein Komma geschrieben werden.

Ein Tupel mit einer Stelle, die an das Objekt ›2‹ gebunden ist
2,
(2,)

Runde Klammern

Soll ein Attribut eines Tupels ausgedrückt werden, ist der Ausdruck für das Tupel oft einzuklammern. Daher findet man kommagetrennte Ausdrücke für Tupel in der Praxis oft in runden Klammern, obwohl im allgemeinen das Komma »,« und nicht die runden Klammern das Entscheidende beim Ausdrücken eines Tupels ist.

0-Tupel

Ein Tupel, das gar keine Stelle enthält, wird auch als 0-Tupel bezeichnet. Um ein solches 0-Tupel auszudrücken kann ein paar leerer runden Klammern verwendet werden.

Ein Tupel ohne Stelle
()
()

Objekte und Bindungen

Es gibt nur ein einziges None-Objekt. Dennoch ist ein Tupel wie »( None, None )« möglich. Das eine None-Objekt kann sich aber nicht an zwei Stellen gleichzeitig befinden. Deswegen enthalten Tupel die Objekte nicht direkt, sie enthalten sogenannte Bindungsstellen, die an Objekte gebunden sein können. Das Objekt »( None, None )« enthält zwei  Bindungsstellen, die beide an das None-Objekt gebunden sind. Die schon behandelten Namen  sind ebenfalls solche Bindungsstellen.

Falls dies nicht zu Mißverständnissen führt, nennen wir die Bindungstellen auch einfach nur Stellen.

Die Reihenfolge der Auswertung ⃗

Wenn ein Komma-Ausdruck ausgewertet wird, werden die Operanden in der gegebenen Reihenfolge (von links nach rechts, also in Leserichtung) ausgewertet.

Konsolenprotokoll
print( "a" ), print( "b" )

a

b

(None, None)

Operatoren

»+«

Der Plusoperator erlaubte uns schon eine Verkettung von Zeichenfolgen.

Konsolenprotokoll
"12"+"3"
'123'

Der Plusoperator erlaubt eine Verkettung von Tupeln.

Konsolenprotokoll
(1,2)+(3,)
(1, 2, 3)

Oft sind Klammern nötig, um den Vorrang festzulegen. Der Ausdruck »1, + 2,« könnte als eine Verkettung der beiden 1-Tupel »1,« und »2,« angesehen werden, aber tatsächlich wird hier nur der unäre Plus-Operator verwendet, und der erste Komma-Operator hat die beiden Operanden »1« und »+2«.

Da es so oft nötig ist, Komma-Ausdrücke einzuklammern, schreiben viele Programmierer alle Komma-Ausdrücke grundsätzlich in Klammern, auch wenn dies einmal nicht nötig sein sollte.

»*«

Der Maloperator erlaubte uns schon eine Vervielfältigung von Zeichenfolgen.

Konsolenprotokoll
"12" * 3
'121212'

Der Maloperator erlaubt eine Vervielfältigung von Tupeln.

Konsolenprotokoll
1, 2 * 3
1, 6
Konsolenprotokoll
( 1, 2 )* 3
(1, 2, 1, 2, 1, 2)

»==«

Beim Vergleich zweier Tupel  oder zweier Listen  wird geprüft, ob die Objekte an den entsprechenden Stellen gleich sind (wenn sie mit »==« verglichen werden).

Auswertung
( 1, 2 )==( 1, 2 )
True
Auswertung
( 1,( 3, 5 ))==( 1,( 3, 5 ))
True

Die Regeln für den Vergleich von Objekten anderer Typen hängen von ihrer Klasse ab.

»<«

Auswertung
( 1, 2 )<( 1, 3 )
True

Funktionen

»type«

Die Funktion »type« bestätigt den Typ.

Konsolenprotokoll
type( ( False, False ))
<class 'tuple'>

»len«

Die Länge von Tupeln.

Protokoll
len( () )
0
len( ( 7, ))
1
len( ( 7, 2, 4 ))
3

»bool«

Nur das leere Tupel gilt als falsch.

Protokoll
bool( () )
False
bool( ( False, ) )
True
bool( ( 7, ))
True
len( ( 7, 2, 4 ))

True

Übungsaufgaben

/   Paarfunktion

Schreiben Sie eine Funktion »divmod« mit zwei Parametern die ein Paar  zweier Zahlen ergibt. Die erste Zahl soll das Ergebnis der ganzzahligen Division des Wertes des ersten Arguments durch den Wert des zweiten Arguments sein; die zweite Zahl der sich bei jener Division ergebende Rest.

Protokoll
divmod( 56, 10 )
(5, 6)
type( divmod( 56, 10 ))
<class 'tuple'>
len( divmod( 56, 10 ))
2

/   Hochhaus A ↚

Positionsnummer Ein Hochhaus hat drei Wohnungen auf jeder Etage. In jeder Etage hat jede Wohnung eine Positionsnummer: „1“ (links), „2“ (Mitte) und „3“ (rechts).

Etagennummer Das Erdgeschoß gilt als „Etage 1“, die Etage, welche sich direkt über dem Erdgeschoß befindet, gilt als „Etage 2“, die nächsthöhere als „Etage 3“ und so weiter.

Wohnungsnummer Es gibt auch eine durchlaufende Wohnungsnummer. Sie beginnt bei 1 für die Wohnung an Position 1 in der Etage 1. In jeder Etage ist die Wohnungsnummer der Wohnung bei Position 1 um 3 größer als die Wohnungsnummer der Wohnung bei Position 1 in der vorigen Etage. Die Wohnungsnummer der Wohnungen an Position 2 und Position 3 ist um 1 beziehungsweise 2 größer als die Wohnungsnummer der Wohnung an Position 1 in derselben Etage.

Das Hochhaus

Etage 9 Wohnung 25 Wohnung 26 Wohnung 27
Etage 8 Wohnung 22 Wohnung 23 Wohnung 24
Etage 7 Wohnung 19 Wohnung 20 Wohnung 21
Etage 6 Wohnung 16 Wohnung 17 Wohnung 18
Etage 5 Wohnung 13 Wohnung 14 Wohnung 15
Etage 4 Wohnung 10 Wohnung 11 Wohnung 12
Etage 3 Wohnung 7 Wohnung 8 Wohnung 9
Etage 2 Wohnung 4 Wohnung 5 Wohnung 6
Etage 1 Wohnung 1 Wohnung 2 Wohnung 3

Position 1 Position 2 Position 3

A0) Schreiben Sie eine Funktion, die aus der Etagennummer und der Positionsnummer die Wohnungsnummer ermittelt.

A1) Schreiben Sie eine Funktion, die aus der Wohnungsnummer die Etagennummer und die Positionsnummer (als ein Paar) ermittelt.

/   Hochhaus B ↚

Positionsnummer Ein Hochhaus hat drei Wohnungen auf jeder Etage. In jeder Etage hat jede Wohnung eine Positionsnummer: „0“ (links), „1“ (Mitte) und „2“ (rechts).

Etagennummer Das Erdgeschoß gilt als „Etage 0“, die Etage, welche sich direkt über dem Erdgeschoß befindet, gilt als „Etage 1“, die nächsthöhere als „Etage 2“ und so weiter.

Wohnungsnummer Es gibt auch eine durchlaufende Wohnungsnummer. Sie beginnt bei 0 für die Wohnung an Position 0 in der Etage 0. In jeder Etage ist die Wohnungsnummer der Wohnung bei Position 0 um 3 größer als die Wohnungsnummer der Wohnung bei Position 0 in der vorigen Etage. Die Wohnungsnummer der Wohnungen an Position 1 und Position 2 ist um 1 beziehungsweise 2 größer als die Wohnungsnummer der Wohnung an Position 0 in derselben Etage.

Das Hochhaus

Etage 9 Wohnung 27 Wohnung 28 Wohnung 29
Etage 8 Wohnung 24 Wohnung 25 Wohnung 26
Etage 7 Wohnung 21 Wohnung 22 Wohnung 23
Etage 6 Wohnung 18 Wohnung 19 Wohnung 20
Etage 5 Wohnung 15 Wohnung 16 Wohnung 17
Etage 4 Wohnung 12 Wohnung 13 Wohnung 14
Etage 3 Wohnung 9 Wohnung 10 Wohnung 11
Etage 2 Wohnung 6 Wohnung 7 Wohnung 8
Etage 1 Wohnung 3 Wohnung 4 Wohnung 5
Etage 0 Wohnung 0 Wohnung 1 Wohnung 2

Position 0 Position 1 Position 2

B0) Schreiben Sie eine Funktion, die aus der Etagennummer und der Positionsnummer die Wohnungsnummer ermittelt.

B1) Schreiben Sie eine Funktion, die aus der Wohnungsnummer die Etagennummer und die Positionsnummer (als ein Paar) ermittelt.

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724704 stefan_ram:724704 Schreibweisen für Tupel in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724704, slrprddef724704, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/tupelschreibweisen_python