Listen

  • Listen sind eine sequentielle, geordnete Sammlung von Werten, Zahlen oder strg oder boolean oder hashes etc. ['spass',[1,2,4], 3.14, [{1],[2],[3]] in eckigen Klammern
  • Listen erzeugen

    
    
    In [1]:
    #Haben Sie schon gemerkt dass # einen Kommentar einletet
    #Für diese einfache Berechnungen muss keine Bibliothek zugeladen werden
    
    x = [4,2,6,3] #Erzeugt eine Liste mit Integer Werten
    x1 = [4,2,6,3] #Erzeugt eine Liste mit den gleichen Werten
    x2 = [1.0,2.0,3.0,4.0] #Erzeugt eine Liste mit float Werten
    y = list() # Erzeugt eine leere Liste
    y = [] #Erzeugt eine leere Liste
    z = ["11","22","33","a","b","c","d"] #erzeugt eine Liste mit string Werten (Zeichen)
    print(x)
    print(id(x))
    print(x1)
    print(id(x1))
    print(x2)
    print(id(x2))
    print(y)
    print(id(y))
    print(z)
    print(id(z))
    
    
    
    
    [4, 2, 6, 3]
    139919836739720
    [4, 2, 6, 3]
    139919836740168
    [1.0, 2.0, 3.0, 4.0]
    139919836739784
    []
    139919836739976
    ['11', '22', '33', 'a', 'b', 'c', 'd']
    139919836739848
    

    Hinzufügen von Objekten in Listen

    
    
    In [2]:
    #Erzeugen einer leeren Liste
    x=list()
    print(x)
    
    
    
    
    []
    
    
    
    In [3]:
    x.append('Eins') #Fügt 'Eins' an das Ende der leeren Liste an
    print(x)
    x.append('Zwei') #Fügt 'Zwei' an das Ende der Liste ['Eins'] an
    print(x)
    
    
    
    
    ['Eins']
    ['Eins', 'Zwei']
    
    
    
    In [4]:
    x.insert(0,'Halbe') #Fügt 'Halbe' an location 0 ein. Listenelemente werden verschoben
    print(x)
    #Achtung: der Index einer Liste beginnt immer mit 0
    #Hier hat die Liste drei Positionen: 0,1,2
    
    
    
    
    ['Halbe', 'Eins', 'Zwei']
    
    
    
    In [5]:
    x=list()
    #Erzeugt wieder leere Liste
    x.append(0)
    print(x)
    x.extend([1,2,3,4,5,6]) #Entpackt die Liste [1,2,3,4,5,6] und fügt jedes Element am Ende der Liste x hinzu
    print(x)
    
    
    
    
    [0]
    [0, 1, 2, 3, 4, 5, 6]
    

    Index und Teilstücke

    
    
    In [6]:
    x=[1,7,2,5,3,5,67,32]
    print(len(x))
    #Es wird die Länge der Liste mit print() ausgegeben
    #Achtung: Index läuft von 0 bis 7
    #x[0] = 1
    #x[7] = 32
    print(x[7])
    
    
    
    
    8
    32
    
    
    
    In [7]:
    print(x[3])
    #gibt das Element an Position 3 aus
    print(x[2:5])
    #Achtung: gibt die Elemente 2,3,4 aus, das 5. Element x[5] ist in der Ausgabe nicht enthalten.
    
    
    
    
    5
    [2, 5, 3]
    
    
    
    In [8]:
    print(x[-1])
    #Ausgabe des letzten Elements mit x[-1]
    
    
    
    
    32
    
    
    
    In [9]:
    #Was gibt print(x[-2]) aus ?
    
    
    
    In [10]:
    print(x[:-1])
    #Ausgabe ohne das letzte Element
    
    
    
    
    [1, 7, 2, 5, 3, 5, 67]
    
    
    
    In [11]:
    print(x[::-1])
    #Ausgabe in umgekehrter Reihenfolge
    
    
    
    
    [32, 67, 5, 3, 5, 2, 7, 1]
    

    Entfernen von Objekten aus Listen

    
    
    In [12]:
    x=[1,7,2,5,3,5,67,32]
    x.pop() #Entfernt das letzte Element aus der Liste
    print(x)
    x.pop(3) #Entfernt das Element an Position 3 aus einer Liste
    print(x)
    
    
    
    
    [1, 7, 2, 5, 3, 5, 67]
    [1, 7, 2, 3, 5, 67]
    
    
    
    In [13]:
    x.remove(7) #Entfernt die erstmals auftretende Zahl 7 aus der Liste
    print(x)
    
    
    
    
    [1, 2, 3, 5, 67]
    

    Alles, was Sie entfernen möchten, muss sich in der Liste befinden oder der Speicherort muss sich in der Liste befinden

    
    
    In [14]:
    x.remove(20)
    
    
    
    
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-14-73bf650720e4> in <module>
    ----> 1 x.remove(20)
    
    ValueError: list.remove(x): x not in list

    Listen sind veränderbar [mutable]

    
    
    In [15]:
    y=['a','b']
    x = [1,y,3]
    print(x)
    print(y)
    y[1] = 4
    print(y)
    
    
    
    
    [1, ['a', 'b'], 3]
    ['a', 'b']
    ['a', 4]
    
    
    
    In [16]:
    #Listen können also selber wieder andere Listen enthalten
    print(x)
    print(x[0])
    print(x[1])
    print(x[2])
    
    
    
    
    [1, ['a', 4], 3]
    1
    ['a', 4]
    3
    
    
    
    In [17]:
    #Können Sie sich vorstellen wie man an die Elemente der Liste ['a',4] an Position 1 der Liste x kommt ?
    #Hierzu muss ein zweiter Index eingesetzt werden
    print(x[1][0])
    print(x[1][1])
    
    
    
    
    a
    4
    
    
    
    In [18]:
    #Speichere in x ein String Objekt
    #gebe mit id(x) den Speicherort aus
    x="Hallo"
    print(x,id(x))
    x+=" Du!"
    print(x,id(x)) #x ist nicht das gleiche Objekt wie es war
    #Speichere in y ein Listen Objekt
    y=["Hallo"]
    print(y,id(y))
    #Füge ein weiteres Listen Element hinzu
    y+=["Du!"] 
    print(y,id(y)) #y ist immer noch das gleiche Objekt. Listen sind veränderlich. Strings sind unveränderlich (immutable)
    
    
    
    
    Hallo 139919835856712
    Hallo Du! 139919835198704
    ['Hallo'] 139919835199112
    ['Hallo', 'Du!'] 139919835199112
    
    
    
    In [19]:
    #Definiere die Funktion eggs
    def eggs(item,total=0):
        total+=item
        return total
    
    #Definiere die Funktion spam
    def spam(elem,some_list=[]):
        some_list.append(elem)
        return some_list
    
    
    
    In [20]:
    print(eggs(1))
    print(eggs(2))
    
    print(spam(1))
    print(spam(2))
    
    
    
    
    1
    2
    [1]
    [1, 2]
    

    Iteration

    Range iteration

    
    
    In [21]:
    #Die for-Schleife erstellt eine neue Variable (z. B. index unten).
    #range(len(x)) erzeugt Werte von 0 bis len (x)
    x=[1,7,2,5,3,5,67,32]
    print(len(x))
    print("-----------------------")
    for index in range(len(x)):
        print(x[index])
    
    
    
    
    8
    -----------------------
    1
    7
    2
    5
    3
    5
    67
    32
    
    
    
    In [22]:
    #Dies lässt sich auch mit i als index formulieren
    for i in range(len(x)):
        print(x[i])
    
    
    
    
    1
    7
    2
    5
    3
    5
    67
    32
    
    
    
    In [23]:
    #Erzeuge eine Liste mit den Indexwerten der Liste x
    list(range(len(x)))
    
    
    
    
    Out[23]:
    [0, 1, 2, 3, 4, 5, 6, 7]

    List element iteration

    
    
    In [24]:
    x=[1,7,2,5,3,5,67,32]
    for element in x: #Das for zieht Elemente - nacheinander - aus der Liste x und verwendet die Variable "element" zum Speichern von Werten
        print(element)
    
    
    
    
    1
    7
    2
    5
    3
    5
    67
    32
    

    Hashes in Listen ablegen

    
    
    In [25]:
    #Bibliothek zum Erzeugen von Hash Werten laden
    import hashlib
    #Erzeugen einer leeren Liste
    m=list()
    x=[1,7,2,5,3,5,67,32,32,1,10,11,12,13,14,15,16] #Listen können gleiche Werte enthalten
    for element in x: 
        y=str(element) # der Variablen y wird der str Wert zugewiesen
        y=y.encode('utf-8') # die Variable y wird encodes in utf-8
        z=hashlib.sha256(y) # dauraus wird für z der sha256 Wert ermittelt
        print(z.hexdigest()) # der Wert wird in hexadezimal gedruckt
        print("----------------------------------")
        m.append(z.hexdigest()) # der Wert wird der liste m angefügt
    print("Wir haben die Daten in die  Liste m gelegt:")
    print("-----------------------------------")
    print(m) # die Liste wird gedruckt
    
    
    
    
    6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
    ----------------------------------
    7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451
    ----------------------------------
    d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35
    ----------------------------------
    ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d
    ----------------------------------
    4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce
    ----------------------------------
    ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d
    ----------------------------------
    49d180ecf56132819571bf39d9b7b342522a2ac6d23c1418d3338251bfe469c8
    ----------------------------------
    e29c9c180c6279b0b02abd6a1801c7c04082cf486ec027aa13515e4f3884bb6b
    ----------------------------------
    e29c9c180c6279b0b02abd6a1801c7c04082cf486ec027aa13515e4f3884bb6b
    ----------------------------------
    6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b
    ----------------------------------
    4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5
    ----------------------------------
    4fc82b26aecb47d2868c4efbe3581732a3e7cbcc6c2efb32062c08170a05eeb8
    ----------------------------------
    6b51d431df5d7f141cbececcf79edf3dd861c3b4069f0b11661a3eefacbba918
    ----------------------------------
    3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278
    ----------------------------------
    8527a891e224136950ff32ca212b45bc93f69fbb801c3b1ebedac52775f99e61
    ----------------------------------
    e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb
    ----------------------------------
    b17ef6d19c7a5b1ee83b907c595526dcb1eb06db8227d650d5dda0a9f4ce8cd9
    ----------------------------------
    Wir haben die Daten in die  Liste m gelegt:
    -----------------------------------
    ['6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', '7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451', 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35', 'ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d', '4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce', 'ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d', '49d180ecf56132819571bf39d9b7b342522a2ac6d23c1418d3338251bfe469c8', 'e29c9c180c6279b0b02abd6a1801c7c04082cf486ec027aa13515e4f3884bb6b', 'e29c9c180c6279b0b02abd6a1801c7c04082cf486ec027aa13515e4f3884bb6b', '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', '4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5', '4fc82b26aecb47d2868c4efbe3581732a3e7cbcc6c2efb32062c08170a05eeb8', '6b51d431df5d7f141cbececcf79edf3dd861c3b4069f0b11661a3eefacbba918', '3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278', '8527a891e224136950ff32ca212b45bc93f69fbb801c3b1ebedac52775f99e61', 'e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb', 'b17ef6d19c7a5b1ee83b907c595526dcb1eb06db8227d650d5dda0a9f4ce8cd9']
    

    Dictionaries

  • d={}
  • d.values()
  • d.keys()
  • d.items()
  • d.clear()
  • d.copy()
  • d.get(k,x)
  • k in d
  • d.setdefault(k[ ,x])
  • d1.update(d2)
  • 
    
    In [26]:
    #Erzeugen des Dictionaries mktcaps
    mktcaps = {'AAPL':538.7,'GOOG':68.7,'IONS':4.6}# Dictionary wird initialisiert
    print(type(mktcaps))
    print(mktcaps)
    print(mktcaps.values())
    print(mktcaps.keys())
    print(mktcaps.items())
    c=mktcaps.items()
    print(c)
    
    
    
    
    <class 'dict'>
    {'AAPL': 538.7, 'GOOG': 68.7, 'IONS': 4.6}
    dict_values([538.7, 68.7, 4.6])
    dict_keys(['AAPL', 'GOOG', 'IONS'])
    dict_items([('AAPL', 538.7), ('GOOG', 68.7), ('IONS', 4.6)])
    dict_items([('AAPL', 538.7), ('GOOG', 68.7), ('IONS', 4.6)])
    
    
    
    In [27]:
    #Was ergibt print(c[0]) ?
    
    
    
    In [28]:
    mktcaps['AAPL'] #Gibt den Wert zurück der mit dem Schlüssel "AAPL" verknüpft ist
    
    
    
    
    Out[28]:
    538.7
    
    
    In [29]:
    mktcaps['GS'] #Ergibt einen Fehler, da GS nicht in mktcaps enthalten ist
    
    
    
    
    ---------------------------------------------------------------------------
    KeyError                                  Traceback (most recent call last)
    <ipython-input-29-e5850cfed449> in <module>
    ----> 1 mktcaps['GS'] #Ergibt einen Fehler, da GS nicht in mktcaps enthalten ist
    
    KeyError: 'GS'
    
    
    In [30]:
    mktcaps.get('GS') #Gibt nichts zurück da GS nicht in mktcaps enthalten ist
    
    
    
    In [31]:
    mktcaps['GS'] = 88.65 #Fügt GS zum dictionary hinzu
    print(mktcaps)
    
    
    
    
    {'AAPL': 538.7, 'GOOG': 68.7, 'IONS': 4.6, 'GS': 88.65}
    
    
    
    In [32]:
    del(mktcaps['GOOG']) #Entfernt GOOG aus mktcaps
    print(mktcaps)
    
    
    
    
    {'AAPL': 538.7, 'IONS': 4.6, 'GS': 88.65}
    
    
    
    In [33]:
    mktcaps.keys() #Gibt die Schlüssel des dicitionaries aus
    
    
    
    
    Out[33]:
    dict_keys(['AAPL', 'IONS', 'GS'])
    
    
    In [34]:
    mktcaps.values() #Gibt die Werte des dictionaries aus
    
    
    
    
    Out[34]:
    dict_values([538.7, 4.6, 88.65])
    
    
    In [35]:
    #Ablegen von Hash Werten in einem dictionary
    import hashlib
    #Erzeugen einer Liste
    l=('AAA','BBB','CCC','DDD','EEE')
    print(l)
    print(len(l))
    y = 'AAA'
    y = y.encode('utf-8')
    hshdict={'AAA':hashlib.sha256(y)}
    #print(hshdict.values())
    #print(hshdict['AAA'])
    #Umwandlung des gespeicherten Hash Werte mit hexdigest()
    v=hshdict['AAA']
    print(v)
    m=v.hexdigest()
    print("--------------------------")
    print(m)
    
    
    
    
    ('AAA', 'BBB', 'CCC', 'DDD', 'EEE')
    5
    <sha256 HASH object @ 0x7f41a01dc030>
    --------------------------
    cb1ad2119d8fafb69566510ee712661f9f14b83385006ef92aec47f523a38358
    

    Beispiel: Alter

    
    
    In [36]:
    alter = {'Peter':45,'Julia':23,'Mathias':36} #Erzeugen eines Dictionaries
    print(alter)
    
    
    
    
    {'Peter': 45, 'Julia': 23, 'Mathias': 36}
    
    
    
    In [37]:
    alter['Julia']=27 #Ändern des Alters
    alter['Monika']=33 #Hinzufügen von Monika - die Reihenfolge der Schlüssel spielt keine Rolle
    print(alter)
    if 'Monika' in alter:
        print (alter['Monika'])
    
    
    
    
    {'Peter': 45, 'Julia': 27, 'Mathias': 36, 'Monika': 33}
    33
    

    Beispiel: Temperaturen in Staedten

    
    
    In [38]:
    temperatur={'stuttgart':32.9,'muenchen':29.8,'hamburg':24.4}# Erzeugen eines dictionaries mit Temperaturen in verschiedenen Städten
    temperatur['koeln']=29.7 #hinzufuegen der temperatur in koeln
    print(temperatur) #ausgabe der temperaturen
    
    
    
    
    {'stuttgart': 32.9, 'muenchen': 29.8, 'hamburg': 24.4, 'koeln': 29.7}
    
    
    
    In [39]:
    for stadt in temperatur:
        print('Die Temperatur in %s ist %g °C' % (stadt,temperatur[stadt]))
    
    
    
    
    Die Temperatur in stuttgart ist 32.9 °C
    Die Temperatur in muenchen ist 29.8 °C
    Die Temperatur in hamburg ist 24.4 °C
    Die Temperatur in koeln ist 29.7 °C
    
    
    
    In [40]:
    if 'Berlin' in temperatur:
        print ('Berlin:', temperatur['Berlin'])
    else:
        print ('Keine Daten für Berlin gefunden')
    
    
    
    
    Keine Daten für Berlin gefunden
    
    
    
    In [41]:
    'stuttgart' in temperatur #überprüfen ob Schlüssel in temperatur enthalten ist
    
    
    
    
    Out[41]:
    True
    
    
    In [42]:
    temperatur.keys() #Ausgabe der Schlüssel im Dictionary
    
    
    
    
    Out[42]:
    dict_keys(['stuttgart', 'muenchen', 'hamburg', 'koeln'])
    
    
    In [43]:
    temperatur.values()#ausgabe der Werte im Dictionary
    
    
    
    
    Out[43]:
    dict_values([32.9, 29.8, 24.4, 29.7])
    
    
    In [44]:
    for stadt in sorted(temperatur):
        print(stadt)
    
    
    
    
    hamburg
    koeln
    muenchen
    stuttgart
    
    
    
    In [45]:
    temperatur_kopie=temperatur.copy() #erstellt eine KOpie des dictonaries
    print (temperatur_kopie)
    
    
    
    
    {'stuttgart': 32.9, 'muenchen': 29.8, 'hamburg': 24.4, 'koeln': 29.7}
    
    
    
    In [46]:
    temperatur2={'stuttgart':22.9,'muenchen':23.8,'hamburg':21.4} #ein 2-tes dictionary
    temperatur.update(temperatur2)
    for stadt in temperatur:
        print('Die Temperatur in %s ist %g °C' % (stadt,temperatur[stadt]))
    print('Anzahl enthaltene Staedte: %g'% len(temperatur))
    
    
    
    
    Die Temperatur in stuttgart ist 22.9 °C
    Die Temperatur in muenchen ist 23.8 °C
    Die Temperatur in hamburg ist 21.4 °C
    Die Temperatur in koeln ist 29.7 °C
    Anzahl enthaltene Staedte: 4
    
    
    
    In [47]:
    temperatur2={'stuttgart':22.9,'muenchen':23.8,'hamburg':21.4,'koeln':18.6,'frankfurt':20.6, 'weimar':18.8} #ein 2-tes dictionary
    temperatur.update(temperatur2)
    for stadt in temperatur:
        print('Die Temperatur in %s ist %g °C' % (stadt,temperatur[stadt]))
    print('Anzahl enthaltene Staedte: %g'% len(temperatur))
    
    
    
    
    Die Temperatur in stuttgart ist 22.9 °C
    Die Temperatur in muenchen ist 23.8 °C
    Die Temperatur in hamburg ist 21.4 °C
    Die Temperatur in koeln ist 18.6 °C
    Die Temperatur in frankfurt ist 20.6 °C
    Die Temperatur in weimar ist 18.8 °C
    Anzahl enthaltene Staedte: 6
    
    
    
    In [ ]:
    
    

    Beispiel Studenten - mit dictionary

    
    
    In [48]:
    st={}#Erzeugen des leeren dictionarys
    st['100100'] = {'Mathe':1.0, 'Bwl':2.5}
    st['100200'] = {'Mathe':2.3, 'Bwl':1.8}
    print(st.items())
    print(type(st))
    print(st.values())
    print(st.keys())
    for k in st.keys():
        print(k, st[k])
    
    
    
    
    dict_items([('100100', {'Mathe': 1.0, 'Bwl': 2.5}), ('100200', {'Mathe': 2.3, 'Bwl': 1.8})])
    <class 'dict'>
    dict_values([{'Mathe': 1.0, 'Bwl': 2.5}, {'Mathe': 2.3, 'Bwl': 1.8}])
    dict_keys(['100100', '100200'])
    100100 {'Mathe': 1.0, 'Bwl': 2.5}
    100200 {'Mathe': 2.3, 'Bwl': 1.8}
    

    Ein Dictionary aus anderen zusammensetzen

  • d2.update(d1)
  • 
    
    In [49]:
    d1={'hans':1.8,'peter':1.73,'rainer':1.74}
    d2={'petra':1.8,'hannes':1.73,'rainer':1.78}
    d1.update(d2)
    print(d1)
    
    
    
    
    {'hans': 1.8, 'peter': 1.73, 'rainer': 1.78, 'petra': 1.8, 'hannes': 1.73}
    
    
    
    In [ ]:
    
    
    
    
    In [ ]:
    
    
    
    
    In [ ]: