Aus dem Kurs: Python Grundkurs

Sequenzielle Datentypen – Tutorial zu Python

Aus dem Kurs: Python Grundkurs

Sequenzielle Datentypen

In dieser Lektion geht es um sequentielle Datentypen. Sequentielle Datentypen bestehen aus einer Aneinanderreihung von einzelnen Werten. Den gebräuchlichsten sequentiellen Datentypen haben Sie bereits kennen gelernt. Das war nämlich die Zeichenkette. Ich öffne jetzt mal IDLE, und dann schreibe ich hier rein: 'Hallo Welt', und das war auch ein sequentieller Datentyp. Denn es handelt sich um eine Sequenz von einzelnen Zeichen. Auf Zeichenketten gehen wir an dieser Stelle aber nicht weiter ein. Aber, apropos, neben den Strings gibt es für die Abfolge von alphanumerische Zeichen, auch noch andere Datentypen. Auf die sollten wir doch noch kurz zu sprechen kommen. Sie nennen sich: Byte und Byte-Array. Auf die Bedeutung eines Bytes werden wir jetzt nicht besonders tief eingehen. Wichtig ist lediglich, dass Sie an dieser Stelle schon mal von ihnen erfahren haben. Und, ja, dass Sie wissen, dass es sich um ein Format handelt, das für die Speicherung oder für die Übertragung von Binärdaten besonders gut geeignet ist. In diesem Tutorial werden wir keine Binärdaten behandeln. Es ist jedoch gut, wenn Sie bereits davon gehört haben, dass Python diesen Datentypen kennt, und auch den Datentypen Byte-Array kennt. Denn spätestens, wenn Sie als Entwickler einmal auf der low-level Ebene arbeiten, werden Sie hiermit konfrontiert. Wir gehen jetzt aber auf den nächsten Datentypen ein, der zu den sequentiellen Datentypen gehört, der sich nämlich Tupels nennt. Der ist nämlich auch sehr wichtig. Genauso wie Strings eine Aneinanderreihung von einzelnen Zeichen sind, so handelt es sich bei Tupels um eine Aneinanderreihung von ganz beliebigen Werten. Wir können einen Tupel also ganz einfach erstellen, indem wir Daten kommasepariert hintereinander schreiben. Also beispielsweise so: ich werde jetzt mal eine Variable erstellen, die nenne ich mal gewichte1. So, das war eine Variable, und dann leite ich ein Tupel mit einer geöffneten runden Klammer ein, dann schreibe ich mal einen Wert rein und noch einen Wert. So. Und dann habe ich einen Tupel. Wie Sie sehen, muss es sich bei diesen einzelnen Werten, nicht um den gleichen Datentypen handeln, denn 76.5 ist ja eine Kommazahl, und 76 ist eine Ganzzahl. Ja, und Tupels lassen sich ja auch miteinander verschachteln. Deswegen habe ich diese Variable auch gleich gewichte1 genannt. Ich kann jetzt nämlich eine zweite mal anlegen: Nämlich gewichte2 ist gleich sowas, ganz andere gewichte und so. Jetzt habe ich zwei Tupels. Und, ja beide Tupels könnten wir jetzt in eine Datenreihe von Tupels setzen. Und diese Verschachtelung, die nenne ich mal gewichte, und kann dann sagen - ja - (gewichte1, gewichte2). So, wenn ich jetzt gewichte mir ausgeben lasse, dann sehen Sie an dieser Stelle einmal: das Tupel gewichte1 und das Tupel gewichte2 innerhalb des Tupels mit zwei Tupeln, mit dem Namen gewichte. So, und nun kommen wir zum letzten sequentiellen Datentypen, den ich Ihnen im Rahmen dieses Trainings zeigen werde, nämlich den sogenannten 'Listen'. Auf den ersten Blick sind Listen und Tupels fast identisch, nur das Listen in eckige Klammern gesetzt werden, also, beispielsweise so: Fangen wir also wieder an - gewichte1, ich nehme mal die gleiche Variable, ist ja egal, und hier schreibe ich dann wieder auch die gleichen Werte rein, - spielt auch keine Rolle - und durch die eckigen Klammern weiß Python Bescheid, dass es sich um eine Liste handelt. So. Und jetzt kann ich das Ganze noch mal mit gewichte2 machen, und sagen, da ist jetzt eine fremde Liste mit den Werten [65, 64.5]. So, das wärs. Und jetzt kann ich eine weitere Liste anlegen, die wieder verschachtelt ist. Und die hat gewichte1 und gewichte2 als Elemente in ihrer Datenreihe. So, und wenn ich jetzt gewichte ausgebe, dann sehen Sie, dass hier auch das Ergebnis ein anderes ist, nämlich eines, das eckige Klammern enthält. Der Unterschied zwischen Tupels und Listen, liegt lediglich darin, dass man die einzelnen Werte eines Tupels, nach der Initialisierung nicht mehr verändern oder löschen kann. Beim Ablauf des Programmes macht sich das in der Geschwindigkeit bemerkbar, denn Python kann dann schneller arbeiten. Wenn sich die Python-Engine nicht mehr darum kümmern braucht, ob sich die Werte in den Behältern zur Laufzeit noch ändern werden oder nicht. Strings und Tupels gewährleisten dies, deshalb sind sie in der Laufzeit besonders effizient. Bei Listen ist das anders. Ihre Elemente lassen sich zur Laufzeit ändern oder auch entfernen. Deshalb kann Python bei ihnen eine erweiterte Funktionalität anbieten. Der Nachteil ist, dass sie zur Laufzeit eben langsamer sind. Es gibt auch einen Fachbegriff für unveränderliche und veränderliche Datentypen, nämlich 'immutable' und 'mutable'. Diese Fachbegriffe werden Ihnen bestimmt begegnen, wenn Sie mit Python arbeiten. Halten wir also nochmal fest: die Verarbeitung von Datenreihen des Datentyps Tupel, sind immer schneller als die von List, weil sie immutable, das heißt unveränderbar sind. Gut, und was ist mit arithmetischen Datentypen, wie Ganzzahlen, Kommazahlen oder Booleans? Es wird Sie womöglich überraschen, denn auch sie sind unveränderlich. Hiervon haben wir bislang aber nichts mitbekommen, denn Python bedient sich eines Tricks, damit Sie als Programmierer hiervon überhaupt nichts mit bekommen. Python geht so vor, dass der eigentliche Wert in einen unveränderlichen Behälter gesetzt wird, auf den die Variable eigentlich nur referenziert. All das und die Automatismen, die Python braucht, damit hier nichts schief geht, bleiben, sagen wir mal, im Verborgenen. Auf dieses Thema gehen wir später nochmal ein, aber grundsätzlich braucht man es eigentlich gar nicht genau zu wissen, denn es funktioniert so, und es ist nur gut, wenn Sie das im Hinterkopf haben, dass die Variablen dieser elementaren Datentypen, wie Zahlen und so weiter, dass die eigentlich nur Referenzen sind. Es kann sein, dass mal hilfreich ist, und dass Sie halt wissen, dass die Programme dadurch schneller laufen. Aber Listen sind veränderlich und laufen deshalb meist langsamer.

Inhalt