Strings, Lists und Sequences

Strings – Zeichenketten

In Python spezieller Datentyp string zur Darstellung von Zeichenketten und Operationen mit Zeichenketten.


a = 'Hello '                  # Single quotes
b = "World "                  # Double quotes
c = "Bob said 'hey there.'"  # A mix of both 
e = b + a  # concatenate
print(e)    # --> World Hello
f = a*3    # --> 'Hello Hello Hello '
c[5]       # (5+1). Element von c --> 'a'
c[2:8]     # (3.-8.). Element von c --> 'b said'
c.count('e') # wie oft kommt 'e' vor in c --> 3
c.upper()  # --> "BOB SAID 'HEY THERE.'"
# string methods can be applied on string constants directly
"abracadabra".find("ra") # --> 2 (=Index of  substring "ra")
" a b ".strip() # --> "a b" (remove leading and trailing white space)
"abracadabra".replace("ra", "lu") # --> "ablucadablu" 
#
# string methods don't change original string,
# if needed a new string is created
e="abracadabra"
print (e.replace("ra", "lu")) # --> "ablucadablu"
print (e) # --> "abracadabra"


Man kann mehrere Methodenaufrufe aneinander-reihen (=chaining), oft praktisch, aber leicht unleserlich ...


# chaining method calls
element = "cesium"
print (':' + element.upper()[4:7].center(10) + ':')
# :    UM    :


Unicode vs Byte Strings


List – Arrays in Python

Ein wichtiges Konstrukt in allen Programmiersprachen sind arrays, das sind

In Python gibt es dafür die list, wie bei strings dient sie nicht nur zum Abspeichern der Daten sondern stellt viele nützliche Funktionen bereit.


>>> L = [ 1, 5, 9, 45, 3, 72, 27 ]  # Definition list
>>> len(L)  # Laenge
7
>>> L[6]  # Element 6+1
27
>>> L[8]  # ausserhalb
#Traceback (most recent call last):
#  File "<stdin>", line 1, in ?
#IndexError: list index out of range
>>> L[2] = 11 # aendern von Element 3
>>> L
[1, 5, 11, 45, 3, 72, 27]
>>> L.sort()
>>> L
[1, 3, 5, 9, 27, 45, 72]
>>> L.append(87)  # anhaengen
>>> L
[1, 5, 11, 45, 3, 72, 27, 87]
>>>
>>> L.insert(2,33) # einfuegen
>>> L
[1, 5, 33, 11, 45, 3, 72, 27, 87]
>>>
>>> del L[3:5] # Loeschen Element 4-6
>>> L
[1, 5, 33, 3, 72, 27, 87]
>>>
>>> L.sort() # sortieren
>>> L
[1, 3, 5, 27, 33, 72, 87]
>>>
>>> L.reverse() # Reihenfolge umdrehen
>>> L
[87, 72, 33, 27, 5, 3, 1]
....
>>> K=[0]*10 # List mit 10 Elementen, alle 0
>>> K
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>> M = [1, 2.45, (1+4j), L[1:5]]  # mixed list
>>> M
[1, 2.4500000000000002, (1+4j), [3, 9, 27, 111]]
>>> M[3][2]
27
...
>>> G = list(range(20))
>>> G
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> 
>>> G = list(range(1,11)) # Zahlen 1-10
>>> G = list(range(1,11,2)) # Zahlen 1,3,5,7,9


2D Arrays oder Matrizen

Einfach auf mehr Dimensionen zu erweitern:


Python Sequences

string und list gehören beide zur Gruppe der Python Sequences:

Konvertierungen möglich:


>>> T = (1,4,6,8) # tuple
>>> T[1]  # --> 4
>>> T[1] = 7 # error for tuple
#Traceback (most recent call last):
#  File "<stdin>", line 1, in ?
#TypeError: object doesn't support item assignment
>>> V = list(T)  # tuple --> list
>>> V
[1, 4, 6, 8]
>>> V[1] = 7 # ok for list 
...
>>> S = 'Balduin'
>>> S[1] = 'o' # Fehler
>>> B = list(S) # Konvertierung in list
['B', 'a', 'l', 'd', 'u', 'i', 'n']
>>> B[1] = 'o'  # ok
>>> S = "".join(B) # zurueck nach string
'Bolduin' 


Slicing – Stückchen rausschneiden

...


>>> a=list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[4:7]
[4, 5, 6]
>>> a[-3:]
[7, 8, 9]
>>> a[-3:-1]
[7, 8]
>>> a[-3:2]
[]
#
>>> s = "Donaudampfschiffahrtsgesellschaftkapitaenskajuetenblumenvase"
>>> s[-10:]  # extract last 10 chars
'blumenvase'