<jupyter_start><jupyter_text>BonusKomplexe Arbeit mit Funktionen! In Python können wir genau so über Funktionen loopen, sie in Listen stecken oder sie an Variablen verweisen, wie wir es mit allen anderen Objekten können.<jupyter_code>from numpy import mean, median
zahlen = [1, 2, 3, 4, 5, 6, 10]
mean(zahlen), median(zahlen)
for central_tendency_estimator in [mean, median]:  # loop over functions
    central_tendency = central_tendency_estimator(zahlen)
    print(central_tendency)
central_tendency_dict = {"mean":mean, "median":median}  # dict of functions
for name in ["mean", "median"]:
    central_tendency = central_tendency_dict[name](zahlen)  # retrieve function from dict
    print(name + ": " + str(central_tendency))
for name in ["mean", "median"]:  # same as above, but more explicit
    central_tendency_estimator = central_tendency_dict[name]
    central_tendency = central_tendency_estimator(zahlen)
    print(name + ": " + str(central_tendency))<jupyter_output>mean: 4.428571428571429
median: 4.0<jupyter_text>Keyword - Argument für Funktionen:<jupyter_code>central_tendency_dict = {"mean":mean, "median":median}

def my_central_tendency(values, method="mean"):
    estimator = central_tendency_dict[method]  # 'method' ist immer, was beim Aufruf der Funktion
    return estimator(values)                   # unter 'method' spezifiziert wurde, oder der default 'mean'
for method in ["mean", "median"]:
    print(my_central_tendency(zahlen, method=method))
my_central_tendency(zahlen)  # default
my_central_tendency(zahlen, method="mean")  # explizit
my_central_tendency(zahlen, method="median")  # explizit<jupyter_output><empty_output><jupyter_text>Eine Möglichkeit, um Stimuluslisten zu generieren, ist `str.format`.<jupyter_code>temp = "/Users/jona/Downloads/stims/{}_{}.jpg"

stims = []

occupations = ["sportler", "maler"]
sexes = ["w", "m"]
for occupation in occupations:
    for sex in sexes:
        stim = temp.format(occupation, sex)
        stims.append(stim)

stims<jupyter_output><empty_output><jupyter_text>Im `random`-Modul befinden sich Funktionen, mit denen Zufallsziehungen erledigt werden können.<jupyter_code>import random
random.choice(stims)  # 'choice' wählt einen zufälligen Eintrag aus,
                      # er befindet sich dann immer noch in der Liste
for trial in range(5):
    print(random.choice(stims))
stims
random.shuffle(stims)  # Bringt die Liste in eine neue Reihenfolge
stims<jupyter_output><empty_output><jupyter_text>Mit `zip` kann über mehrere Listen gleichzeitig iteriert werden.<jupyter_code>numbers, letters = [1, 2, 3], ['a', 'b', 'c']

for number, letter in zip(numbers, letters):
    print(number, letter)<jupyter_output>1 a
2 b
3 c
{'fraction_non_alphanumeric': 0.10967024824008892, 'fraction_numerical': 0.012226750648388292, 'mean_word_length': 5.521739130434782, 'pattern_counts': {'":': 6, '<': 19, '<?xml version=': 0, '>': 19, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '262133', 'license': 'BSD-3-Clause', 'n_tokens_mistral': 987, 'n_tokens_neox': 953, 'n_words': 235, 'path': 'ClassNotes/python_class_6.ipynb', 'repo_name': 'jona-sassenhagen/python_for_psychologists', 'size': '2699'}