Seite 1 von 1

Unklarer Lambda Ausdruck

Verfasst: Freitag 10. April 2020, 10:59
von _Euklid_
Guten Tag,

ich habe folgenden Code gefunden, den ich bis auf einen Ausdruck soweit nachvollziehen kann:

Code: Alles auswählen

from collections import Counter, defaultdict



inputs = [({'label': 'mid', 'language':'python'}, True),
    ({'label': 'mid', 'language':'html'}, False),
    ({'label': 'jun', 'language':'python'}, True),
    ({'label': 'sen', 'language':'c'}, True),
    ({'label': 'jun', 'language':'c'}, False)]
    
def group_by(items, key_fn):
    """returns a defaultdict(list), where each input item
    is in the list whose key is key_fn(item)"""
    groups = defaultdict(list)
    for item in items:
        print(item)
        key = key_fn(item)
        print(key)
        groups[key].append(item)
    return groups

def partition_by(inputs, attribute):
    """returns a dict of inputs partitioned by the attribute
    each input is a pair (attribute_dict, label)"""
    return group_by(inputs, lambda x: x[0][attribute])

def partition_entropy_by(inputs,attribute):
    """computes the entropy corresponding to the given partition"""
    partitions = partition_by(inputs, attribute)
    print(partitions)

partition_entropy_by(inputs, 'label')
Ich bin in Python noch neu und hänge etwas bei dem Lambda Ausdruck fest:

Code: Alles auswählen

lambda x: x[0][attribute]
Was heißt das genau? Ich habe versucht mir das mal ausgeben zu lassen aber ich erhalte hierbei eine Referenz oder etwas vergleichbares. Kann Jemand erklären, was dieser Lambda Ausdruck bewirkt? Gibt es hierfür auch eine andere Implementierung, also eine Alternative zu dem Lambda Ausdruck?

Re: Unklarer Lambda Ausdruck

Verfasst: Freitag 10. April 2020, 11:00
von __deets__
Ein lambda ist einfach eine kleine Funktion.

Code: Alles auswählen

lambda x: x[0][attribute]
ist aequivalent zu

Code: Alles auswählen

def anonymer_funktions_name(x):
    return x[0][attribute]

Re: Unklarer Lambda Ausdruck

Verfasst: Freitag 10. April 2020, 11:06
von _Euklid_
Danke für deine rasche Antwort! Aber was wäre in diesem Fall das x?

Re: Unklarer Lambda Ausdruck

Verfasst: Freitag 10. April 2020, 11:20
von __deets__
Hast du mal die Dokumentation der Funktion, in der das Lambda verwandt wird, angeschaut? Dann sollte das klar werden, was x ist.