## Python Extras
### Kompakte Zuweisungen
Oft wollen wir eine Variable um einen Wert erhöhen oder verringern. Bisher schreiben wir meist etwas wie:
index = index + 1
Weil das Muster so oft auftritt, gibt es eine abgekürzte Syntax dafür:
index += 1
Dasselbe funktioniert für alle binären Operatoren (`+`, `-`, `*`, `/`, `//`, `%`, ...).
### Negative Indices
Der Index bei einem Listenzugriff kann auch negativ sein und nummeriert die Elemente dann vom letzten her. Der Index `-1` zeigt also auf das letzte Element:
```
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
```
### List Slicing
Die `for`-Schleife ist ja viel kompakter und weniger fehleranfällig, als die `while`-Schleife - aber dafür auch weniger flexibel. Ist "jedes zweite Element" mit `for` möglich? Lies auf [[https://stackoverflow.com/questions/509211/how-slicing-in-python-works|Stackoverflow]] diese Antwort über Slicing!
Kurz:
a[start:stop] # items start through stop-1
a[start:] # items start through the rest of the list
a[:stop] # items from the beginning through stop-1
a[:] # a copy of the whole list
a[start:stop:step] # start through not past stop, by step
Löse [[gf_informatik:programmieren_iii#aufgabe_h3|Aufgabe H3]] mit Slicing!
Dasselbe funktioniert für alle _Sequences_, also neben Listen auch für Strings:
s = 'Hallo, Welt!'
print(s[7, 11])
Was gibt das folgende Snippet aus? Weshalb?
s = '!reverof gnicils tsiL'
print(s[::-1])