Programmieren in Python

Programmieren in Python

6. Eine kleine Builtin-Safari

Malte Helmert

Albert-Ludwigs-Universit?at Freiburg

KI-Praktikum, Sommersemester 2009

1 / 34

Eine kleine Builtin-Safari

Mittlerweile haben wir ausreichend Konzepte angeh?auft, um einen Gro?teil der Methoden der grundlegenden Datentypen zu verstehen. Daher soll es in dieser Lektion nicht um neue Konzepte gehen, sondern darum, was man mit Strings, Tupeln und Listen so alles anstellen kann. Der Vollst?andigkeit halber werden einige fru?her erw?ahnte Builtins (ohne n?ahere Beschreibung) wiederholt.

Die Lektion gliedert sich wie folgt: Builtins Methoden von Zahlen und Tupeln Methoden von list String-Methoden

3 / 34

Eine kleine Builtin-Safari

Mittlerweile haben wir ausreichend Konzepte angeh?auft, um einen Gro?teil der Methoden der grundlegenden Datentypen zu verstehen. Daher soll es in dieser Lektion nicht um neue Konzepte gehen, sondern darum, was man mit Strings, Tupeln und Listen so alles anstellen kann. Der Vollst?andigkeit halber werden einige fru?her erw?ahnte Builtins (ohne n?ahere Beschreibung) wiederholt.

Die Lektion gliedert sich wie folgt: Builtins Methoden von Zahlen und Tupeln Methoden von list String-Methoden

2 / 34

Konstruktoren fu?r Zahlen

int(x), long(x), float(x), complex(x): Erzeugt eine neue Zahl des jeweiligen Typs aus einer anderen Zahl oder einem String x. complex(re, im): Erzeugt eine komplexe Zahl aus zwei Zahlen re und im, die Real- und Imagin?arteil angeben. Python-Interpreter >>> x, y = int("21"), long(23.1) >>> print x, y, x + y 21 23 44

4 / 34

Konstruktoren fu?r Strings & A?hnliches

str(x), unicode(x): Formatiert x als Byte- bzw. Unicode-String. Die Formatierung ist dieselbe wie bei print x. repr(x): Formatiert x als Byte-String. Die Formatierung ist dieselbe wie bei der Ausgabe nackter Ausdru?cke im interaktiven Interpreter.

repr(x) kann auch als `x` (in backticks) geschrieben werden, dies ist aber verp?ont. chr(number), unichr(number): Erzeugt einen einelementingen Byte- bzw. Unicode-String mit dem Zeichen mit der Kodierung number. ord(char): Nimmt einen einelementigen Byte- oder Unicode-String und liefert die Kodierung des Zeichens.

5 / 34

Konstruktoren fu?r Tupel und Listen

tuple(seq): Erzeugt ein Tupel mit denselben Element wie die Sequenz seq. list(seq): Erzeugt eine Liste mit denselben Elemente wie die Sequenz seq. Nu?tzlich zum (flachen) Kopieren von Listen.

Python-Interpreter >>> print list("abc"), tuple(["ham", "spam"]) ['a', 'b', 'c'] ('ham', 'spam') >>> x = [1, [2, 2.5], 3] >>> y = list(x) >>> del y[2] >>> del y[1][1] >>> print x, y [1, [2], 3] [1, [2]]

7 / 34

Konversionen zwischen Zahlensystemen

hex(n), oct(n): Kodiert eine Zahl im Hexadezimal- bzw. Oktalsystem. Liefert Bytestring mit Pr?afix 0x bzw. 0 und evtl. Suffix L. int(string, base), long(string, base): Erzeugt eine Zahl aus einer Kodierung im Zahlensystem mit der Basis base. base = 0 ist ein Spezialfall und versteht genau die gu?ltigen intbzw. long-Literale (inkl. den Pr?afixen 0x und 0). Python-Interpreter >>> print hex(15 ** 15), oct(7 ** 7) 0x613B62C597707EFL 03110367 >>> print int("110101", 2), int("37", 8) 53 31 >>> print int("0xff", 0), int("037", 0), int("45", 0) 255 31 45

6 / 34

Konstruktoren fu?r Bools

bool(x): Erzeugt folgenden bool-Wert:

False, falls x den Wert False oder None hat, eine Zahl mit Wert 0 (0, 0L, 0.0, 0j) oder eine leere Sequenz ist ("", (), []). True ansonsten. bool(x) wird (implizit) vor Anwendung des not-Operators aufgerufen1; man kann also beispielsweise mit if not x testen, ob eine Liste leer ist.

1Tats?achlich passiert etwas anderes, aber man kann es sich so vorstellen. . .

8 / 34

Mathematische Funktionen

abs(x): Berechnet den Absolutbetrag der Zahl x. divmod(x, y): Berechnet (x // y, x % y). pow(x, y[, z]): Berechnet x ** y bzw. (x ** y) % z. sum(seq): Berechnet die Summe einer Zahlensequenz. min(seq), min(x, y, ...): Berechnet das Minimum einer Sequenz (erste Form) bzw. der Argumente (zweite Form).

Sequenzen werden lexikographisch verglichen. Bei Mischung konzeptuell unvergleichbarer Typen (etwa Zahlen und Listen), ist das Ergebnis willku?rlich, aber konsistent. max(seq), max(x, y, ...): analog zu min

9 / 34

Weitere wichtige Builtins (1)

zip(seq1, ...): Erzeugt Liste von Tupeln von korrespondierenden Elementen der u?bergebenen Sequenzen. any(seq): A?quivalent zu elem1 or elem2 or elem3 or ..., wobei elemi die Elemente von seq sind. Sequenzelemente werden nur bis zum ersten "wahren" Element evaluiert (short-circuit-Semantik). all(seq): A?quivalent zu elem1 and elem2 and elem3 and ..., wobei elemi die Elemente von seq sind. Sequenzelemente werden nur bis zum ersten "falschen" Element evaluiert (short-circuit-Semantik). id(obj): Liefert die Identit?at eines Objekts (ein int).

11 / 34

Beispiele zu sum, min, max

Python-Interpreter >>> primes = (7, 5, 3, 2, 13, 11) >>> dish = ["ham", "spam", "sausages", "baked beans"] >>> for seq in (primes, dish): ... print min(seq), max(seq) ... print sum(seq) ... 2 11 41 baked beans spam Traceback (most recent call last):

File "", line 1, in ? TypeError: unsupported operand type(s) for +: 'int' and 'str'

10 / 34

Weitere wichtige Builtins (2)

len(seq): Berechnet die L?ange einer Sequenz. range([start,] stop[, step]): Erzeugt die Liste [start, start + step, ...] bis zur Zahl stop (exklusive). Bei zwei Argumenten ist step == 1, bei einem Argument au?erdem start == 0. xrange([start,] stop[, step]): Wie range, erzeugt aber keine echte Liste. enumerate(seq): Generiert Paare der Form (i, seq[i]) ( erzeugt keine echte Liste).

12 / 34

Eine kleine Builtin-Safari

Mittlerweile haben wir ausreichend Konzepte angeh?auft, um einen Gro?teil der Methoden der grundlegenden Datentypen zu verstehen. Daher soll es in dieser Lektion nicht um neue Konzepte gehen, sondern darum, was man mit Strings, Tupeln und Listen so alles anstellen kann. Der Vollst?andigkeit halber werden einige fru?her erw?ahnte Builtins (ohne n?ahere Beschreibung) wiederholt.

Die Lektion gliedert sich wie folgt: Builtins Methoden von Zahlen und Tupeln Methoden von list String-Methoden

13 / 34

Eine kleine Builtin-Safari

Mittlerweile haben wir ausreichend Konzepte angeh?auft, um einen Gro?teil der Methoden der grundlegenden Datentypen zu verstehen. Daher soll es in dieser Lektion nicht um neue Konzepte gehen, sondern darum, was man mit Strings, Tupeln und Listen so alles anstellen kann. Der Vollst?andigkeit halber werden einige fru?her erw?ahnte Builtins (ohne n?ahere Beschreibung) wiederholt.

Die Lektion gliedert sich wie folgt: Builtins Methoden von Zahlen und Tupeln Methoden von list String-Methoden

15 / 34

Attribute und Methoden von int, long, float, complex und tuple

Die Zahlenklassen haben keine Attribute und Methoden.2 Einzige Ausnahme: Wenn x ein complex ist, bezeichnet x.real den Real- und x.imag den Imagin?arteil.

tuple besitzt ebenfalls keine (nicht-magischen) Methoden: Alle Operationen auf Tupeln sind Operatoren oder Builtins. Ausnahmen: Tupel in Python 2.6 haben index- und count-Methoden entsprechend den gleichnamigen list-Methoden. Diese existieren aber noch nicht in Python 2.5, zu dem wir hier kompatibel bleiben wollen.

2Stimmt nicht ganz: Sie haben so genannte magische Methoden, die fu?r die Implementation der Operatoren wie + - * / aufgerufen werden. Dies sind aber interne Dinge, um die wir uns hier nicht ku?mmern mu?ssen.

14 / 34

Methoden von list: Einfu?gen und Entfernen

Die folgenden Methoden fu?r Listen modifizieren das betroffene Objekt direkt. Sofern nicht anders angegeben, liefern sie alle None zuru?ck.

l.append(element): H?angt ein Element an die Liste an. A?quivalent zu l += [element]. l.extend(seq): H?angt die Elemente einer Sequenz an die Liste an. A?quivalent zu l += seq. l.insert(index, element): Fu?gt element an Position index in die Liste ein. l.pop(): Entfernt das letzte Element und liefert es zuru?ck. l.pop(index): Entfernt das Element an Position index und liefert es zuru?ck.

16 / 34

Methoden von list: Suchen

Die folgenden Methoden fu?r Listen modifizieren das betroffene Objekt direkt. Sofern nicht anders angegeben, liefern sie alle None zuru?ck.

l.index(value[, start[, stop]]): Sucht in der Liste (bzw. in l[start:stop]) nach einem Objekt mit Wert value. Liefert den Index des ersten Treffers zuru?ck. Erzeugt einen Fehler, falls kein passendes Element existiert. l.remove(value): Entfernt das erste Element aus der Liste, das gleich value ist. Entspricht del l[l.index(value)]. l.count(value): Liefert die Zahl der Elemente in der Liste, die gleich value sind.

17 / 34

Sortieren und Umdrehen von Tupeln und Strings

Da Tupel und Strings unver?anderlich sind, gibt es fu?r sie auch keine mutierenden Methoden zum Sortieren und Umdrehen. Zwei weitere Builtins springen in die Bresche:

sorted(seq): Liefert eine Liste, die dieselben Elemente hat wie seq, aber (stabil) sortiert ist. Es gilt das u?ber list.sort Gesagte. reversed(seq): Generiert die Elemente von seq in umgekehrter Reihenfolge. Liefert wie enumerate einen Generator und sollte genauso verwendet werden.

19 / 34

Methoden von list: Sortieren und Umdrehen

Die folgenden Methoden ver?andern alle das betroffene Objekt direkt und liefern None zuru?ck.

l.sort(): Sortiert die Liste. Der Sortieralgorithmus ist stabil.

Normalerweise wird der u?bliche Vergleich (mit = usw.) als Grundlage zur Sortierung gew?ahlt, aber es ist m?oglich, darauf Einfluss zu nehmen. Leider fehlen uns dafu?r im Moment die syntaktischen Mittel, so dass ich auf sp?ater vertr?osten muss. l.reverse(): Dreht die Reihenfolge der Liste um; entspricht l[:] = l[::-1].

18 / 34

Eine kleine Builtin-Safari

Mittlerweile haben wir ausreichend Konzepte angeh?auft, um einen Gro?teil der Methoden der grundlegenden Datentypen zu verstehen. Daher soll es in dieser Lektion nicht um neue Konzepte gehen, sondern darum, was man mit Strings, Tupeln und Listen so alles anstellen kann. Der Vollst?andigkeit halber werden einige fru?her erw?ahnte Builtins (ohne n?ahere Beschreibung) wiederholt.

Die Lektion gliedert sich wie folgt: Builtins Methoden von Zahlen und Tupeln Methoden von list String-Methoden

20 / 34

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download