Datenstrukturen¶
List¶
Leere Liste
[1]:
l = []
[2]:
l.append(42)
l
[2]:
[42]
[3]:
l2 = ['hallo', 'schatzi']
l.extend(l2)
l
[3]:
[42, 'hallo', 'schatzi']
[4]:
l[1]
[4]:
'hallo'
Suchen: lineare Zeitkomplexität
[5]:
l
[5]:
[42, 'hallo', 'schatzi']
[6]:
len(l)
[6]:
3
1 Vergleich:
[7]:
42 in l
[7]:
True
3 Vergleiche
[8]:
'schatzi' in l
[8]:
True
Iteration¶
[9]:
l
[9]:
[42, 'hallo', 'schatzi']
[10]:
len(l)
[10]:
3
[11]:
i = 0
while i < len(l):
print(l[i])
i += 1
42
hallo
schatzi
Das geht besser: for
(JavaScript: foreach
)
[12]:
for element in l:
print(element)
42
hallo
schatzi
Dictionary¶
“Assoziatives Array”, oder kurz: key/value mapping
[13]:
color_translations = {
'rot': 'red',
'blau': 'blue',
'gelb': 'yellow'
}
[14]:
len(color_translations)
[14]:
3
Suche: Konstante Zeitkomplexität (als Hashtable)
[15]:
'rot' in color_translations
[15]:
True
[16]:
color_translations['rot']
[16]:
'red'
[17]:
color_translations['schwarz'] = 'black'
[18]:
color_translations
[18]:
{'rot': 'red', 'blau': 'blue', 'gelb': 'yellow', 'schwarz': 'black'}
[19]:
del color_translations['rot']
color_translations
[19]:
{'blau': 'blue', 'gelb': 'yellow', 'schwarz': 'black'}
Iteration¶
[20]:
color_translations
[20]:
{'blau': 'blue', 'gelb': 'yellow', 'schwarz': 'black'}
Iteration über Keys …
[21]:
for element in color_translations:
print(element)
blau
gelb
schwarz
[22]:
for element in color_translations.keys():
print(element)
blau
gelb
schwarz
Iteration über Values …
[23]:
for element in color_translations.values():
print(element)
blue
yellow
black
Iteration über beides …
[24]:
for entry in color_translations.items():
print('----')
print('der ganze entry:', entry)
print('key auf deutsch:', entry[0])
print('value auf englisch:', entry[1])
----
der ganze entry: ('blau', 'blue')
key auf deutsch: blau
value auf englisch: blue
----
der ganze entry: ('gelb', 'yellow')
key auf deutsch: gelb
value auf englisch: yellow
----
der ganze entry: ('schwarz', 'black')
key auf deutsch: schwarz
value auf englisch: black
Same, mit Tuple Unpacking
[25]:
for deutsch, englisch in color_translations.items():
print('----')
print('key auf deutsch:', deutsch)
print('value auf englisch:', englisch)
----
key auf deutsch: blau
value auf englisch: blue
----
key auf deutsch: gelb
value auf englisch: yellow
----
key auf deutsch: schwarz
value auf englisch: black
[ ]:
Set¶
Sack von Elementen (auch als Hashtable implementiert-> schnelle Suche)
[26]:
my_colors = {'rot', 'blau', 'schwarz', 'gelb'}
type(my_colors)
[26]:
set
[27]:
her_colors = {'pink', 'blau', 'schwarz', 'grün', 'beige'}
[28]:
'rot' in my_colors
[28]:
True
Union (Vereiningungsmenge)
[29]:
my_colors | her_colors
[29]:
{'beige', 'blau', 'gelb', 'grün', 'pink', 'rot', 'schwarz'}
Schnittmenge
[30]:
my_colors & her_colors
[30]:
{'blau', 'schwarz'}
Symmetrische Differenzmenge
[31]:
my_colors ^ her_colors
[31]:
{'beige', 'gelb', 'grün', 'pink', 'rot'}
User Datenbank: Showcase Full Stack Development¶
5: Response kommt von der DB¶
Der Request an die DB sei gewesen: select * from userdb;
[32]:
# Man denke sich, das waere PHP:
response = [
['1037190666', 'Jörg', 'Faschingbauer'],
['6666010185', 'Oliver', 'Schwarzbauer'],
]
6: Aufgabe: Formulieren eines JSON Strings, damit man diese Daten über die HTTP Verbindung zum Client/Browser schicken kann.¶
[33]:
# Man denke sich wieder, dass das in PHP waere
import json
json_string_fuer_den_browser = json.dumps(response)
[34]:
# anders: JSON als dictionary
response_dict = {}
for svnr, vorname, nachname in response:
response_dict[svnr] = { 'vorname': vorname, 'nachname': nachname, 'svnr': svnr }
[35]:
response_dict
[35]:
{'1037190666': {'vorname': 'Jörg',
'nachname': 'Faschingbauer',
'svnr': '1037190666'},
'6666010185': {'vorname': 'Oliver',
'nachname': 'Schwarzbauer',
'svnr': '6666010185'}}
[36]:
import pprint
pprint.pprint(response_dict)
{'1037190666': {'nachname': 'Faschingbauer',
'svnr': '1037190666',
'vorname': 'Jörg'},
'6666010185': {'nachname': 'Schwarzbauer',
'svnr': '6666010185',
'vorname': 'Oliver'}}
Formatieren wir endlich in JSON …
[37]:
import json
transfer_string_in_php_am_server = json.dumps(response_dict)
[38]:
transfer_string_in_php_am_server
[38]:
'{"1037190666": {"vorname": "J\\u00f6rg", "nachname": "Faschingbauer", "svnr": "1037190666"}, "6666010185": {"vorname": "Oliver", "nachname": "Schwarzbauer", "svnr": "6666010185"}}'
7. Jetzt schickman weg: vom Server (PHP) zum Browser (JS)¶
[39]:
transfer_string_in_js_am_browser = transfer_string_in_php_am_server
8. in JS JSON string empfangen¶
[40]:
transfer_string_in_js_am_browser
[40]:
'{"1037190666": {"vorname": "J\\u00f6rg", "nachname": "Faschingbauer", "svnr": "1037190666"}, "6666010185": {"vorname": "Oliver", "nachname": "Schwarzbauer", "svnr": "6666010185"}}'
9. Nun muessen wir den JSON-String in JS verwandlen¶
[41]:
# man denke sich hier, das waere JS
response_dict_am_browser = json.loads(transfer_string_in_js_am_browser)
[42]:
pprint.pprint(response_dict_am_browser)
{'1037190666': {'nachname': 'Faschingbauer',
'svnr': '1037190666',
'vorname': 'Jörg'},
'6666010185': {'nachname': 'Schwarzbauer',
'svnr': '6666010185',
'vorname': 'Oliver'}}
## 10. Nun gilt es, die JS Datenstruktur in eine HTML