2.2 Hinterlistige Übungen#

Im Folgenden findest du ein paar Trockenübungen zur Liste. Das muss sein, weil der Umgang mit Listen für die Programmierung von ABM einfach sitzen muss. Wir werden in keiner Simulation ohne Listen auskommen. Das wird sich jetzt alles nach mühseliger Handarbeit anfühlen, aber keine Sorge, wenn du jetzt das Prinzip von Listen verstehst, dann kannst du später die meisten Listenzugriffe per Loop automatisieren und dich zurücklehnen.

Verwende während den Übungen immer wieder die Funktion print(), die Konsole oder den Variablenexplorer in Spyder, um dir den aktuellen Zustand deiner Variablen/Objekte anzeigen zu lassen. So erkennst du schnell, wenn etwas falsch läuft.

Aufgabe 1#

  • Erstelle zwei leere Listen namens gruppe1 und gruppe2.

Aufgabe 2#

  • Füge in gruppe1 die Zahlen 4, 6 und 8 mittels der Funktion append() hinzu.

Aufgabe 3#

  • Füge in gruppe2 die Zahlen 1, 3 und 8 mittels der Funktion insert() oder der Funktion extend() hinzu.

Aufgabe 4#

Jede Zahl in den Listen gruppe1 und gruppe2 steht jeweils für einen Agenten bzw. die Meinung eines Agenten auf einer Skala von 0 bis 10.

  • Berechne jeweils die durchschnittliche Meinung der Gruppe und speichere diese unter beliebigen Variablennamen ab. Tipp: Die Funktionen sum() und len()können dir dabei behilflich sein.

Aufgabe 5#

  • Lasse dir den Wert des ersten Agenten aus gruppe1 mittels Listenindizierung ausgeben.

Aufgabe 6#

Der erste und der zweite Agent aus gruppe2 unterhalten sich. Der erste Agent überzeugt den zweiten Agenten. Dadurch verändert sich die Meinung des zweiten Agenten. Die Meinung des zweiten Agenten setzt sich nun zu 60% aus dessen ursprünglicher Meinung und zu 40% aus der Meinung des ersten Agenten zusammen.

  • Berechne die neue Meinung des zweiten Agenten aus gruppe2. Verwende während den Berechnungen Listenindizierung. Achte darauf, dass du keinen Agenten aus gruppe1 überschreibst!

Aufgabe 7#

Dem dritten Agenten aus gruppe2 wird es in gruppe2 zu bunt, weshalb er in gruppe1 überwechseln möchte.

  • Füge mit einem beliebigen Vorgehen den dritten Agenten aus gruppe2 an der ersten Position (!) von gruppe1 ein und lösche diesen aus gruppe2.

Aufgabe 8#

  • Erstelle eine Gesamtliste population, welche alle Agenten aus gruppe1 und gruppe2 enthält.

Aufgabe 9#

  • Speichere die ersten 5 Agenten der Liste population in einer Liste namens first_five_agents. Verwende dabei Slicing.

Aufgabe 10#

Angenommen wir wollen per Indizierung auf das letzte Element einer Liste zugreifen, wissen aber zunächst nicht, wie viele Elemente sich in der Liste befinden.

  • Welche zwei Lösungswege fallen dir ein, um auf das letzte Element einer Liste zuzufgreifen?